2017-01-19 52 views
1

我有一個.NET應用程序,它是服務器框架,它託管在IIS中,它在IIS啓動時啓動。如何調試在應用程序啓動時執行的代碼,如果應用程序駐留在IIS中並在IIS啓動時啓動?

調試我通過Visual Studio連接到客戶端進程的框架。它適用於正常的調試,但是現在我想在框架從xml文件加載它的配置(它由C#代碼處理)時調試節。它只在應用程序啓動時執行一次,與IIS啓動的時間完全相同。附加我的解決方案時,我的速度不及IIS。

如果我將框架附加到客戶端進程,則重置IIS將調試器分離。

如何處理這樣的問題?

糟糕的解決方案:唯一可行的方法是在應用程序的開頭放置一個非常長的Thread.Sleep,然後快速連接。

+0

你是什麼意思「重置IIS」?如果您只是回收應用程序池,調試器是否會分離? – Crowcoder

+0

@Crowcoder是的。如果您轉到右上角的IIS GUI,則會出現RESTART按鈕。 – Yoda

+0

這與回收應用程序池不同。 – Crowcoder

回答

1

嘗試將項目更改爲使用「IIS Express」而不是本地IIS - 然後啓動應用程序時,Visual Studio也將啓動IIS Express,並且調試器已連接到該服務。

您可以通過右鍵單擊項目來更改設置=>選擇屬性=>單擊Web選項卡=>在組合框的「服務器」下找到IIS Express。

+0

好吧,你知道我可以如何選擇我想使用的IIS嗎(我明天可以使用代碼和工具訪問機器),但我認爲這也許是一些標準的技巧。客戶端應用程序也運行在與框架相同的IIS上。 – Yoda

+0

在我的原始評論中,我寫了如何配置服務器以使用IIS Express。當你這樣做的時候,它會揭示服務器的新url(很可能是localhost和一個隨機的端口號,如下所示:http:// localhost:1236) - 你只需將你的客戶端指向這個url,它應該可以工作,假設它在同一臺機器上) – lmms90

+0

@Yoda,這個問題呢?你能從lmms90的建議中獲得有用的信息嗎? –

2

添加

System.Diagnostics.Debugger.Launch(); 

Application_Start。您會看到一個彈出窗口,詢問您是否要調試網站,並且如果單擊確定,您將以調試模式進入Visual Studio,並暫停在該行。

相關問題