簡體   English   中英

是否可以在不影響服務的所有用戶的情況下調試IIS?

[英]Is it possible to debug IIS without affecting all users of the service?

這可能看起來像一個愚蠢的問題,但我們在共享測試環境中調試IIS時遇到問題,我希望有人可以給我們一個答案。

我們有一個運行IIS 6和sharepoint 2007的Windows Server 2003.我們使用visual studio 2008在服務器上進行本地調試。

當有人附加調試器並逐步執行代碼時,我們發現所有用戶都受到影響。 本質上,Web服務器停止處理來自所有用戶的所有請求。

我們的問題是這是否是典型的情況並且是可以預期的? 或者是否有一些我們可以更改的配置,允許調試一個用戶的會話,但不會影響另一個用戶的會話。

凱夫走在正確的軌道上。 您需要確保要與其他項目分開調試的項目位於其自己的應用程序池中。 這會將其隔離到自己的進程,並允許停止/調試該進程,而不會影響可以保留在不同池中的其他應用程序。

建立

  • 開始 - >運行 - > inetmgr
  • 右鍵單擊“應用程序池”
  • 單擊新建 - >應用程序池
  • 命名新池
  • 右鍵單擊要隔離的應用程序
  • 單擊屬性
  • 單擊“主目錄”選項卡
  • 在應用程序池下拉列表中,選擇新池
  • 單擊確定

如果舊進程中有任何排隊請求,則在將所有請求轉移到新進程之前,可能需要幾分鍾才能終止。

調試

要確定需要將調試器附加到w3wp.exe的哪個實例:

  • 開始 - >運行 - > cmd
  • 輸入iisapp
  • 系統可能會提示您注冊CScript,如果是,請單擊是並再次運行

您可能仍然發現的唯一問題是,如果多個應用程序正在使用aspnet_state服務,那么如果您還需要調試該過程,則可能會遇到阻塞問題。

鏈接

“當有人附加調試器並逐步完成代碼時,我們發現所有用戶都受到影響。實質上,Web服務器停止處理來自所有用戶的所有請求。”

這是正常的,一旦將調試器附加到諸如inetinfo.exew3wp.exe類的進程並設置斷點,每個請求/線程都將被阻塞,直到您允許調試器繼續,直到下一個斷點。

我從來沒有找到解決辦法。 您是否有某些原因無法在每個開發人員的工作站上進行調試?

在服務器上設置並行項目並嘗試使用它。 您可以使用debug.mydomain.com然后只使用它進行測試。 我個人可以考慮在您的實時服務器上進行調試的唯一原因是,由於硬件或軟件配置,應用程序的功能存在顯着差異。

理想情況下,您希望在盡可能類似的環境中擁有系統的單獨服務器/實例,這樣您就不必在實時計算機上進行調試。 此外,您可能需要考慮將所有錯誤寫入事件日志或至少檢查日志,因為asp.net通常會記錄在那里。 通過這種方式,您可以查看錯誤的位置,並使用它來幫助您在開發環境中解決問題。

我相信在visual studio中你可以設置調試器來只破解正在調試的進程,而不是所有的進程。 根據您的系統設置方式,YMMV可以使用此功能。

它不能改變AFAIK。 但這是為了開發/調試目的而設置單獨的Web節點或Web應用程序的常規做法。 如果在某些情況下需要知道某些變量的確切值,則可以始終使用調試日志記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM