2012-01-20 54 views
2

上下文:在本地IIS上部署的.NET Web服務。 VS 2010用於調試web服務代碼。如何在VS 2010中調試.NET Web服務初始化代碼?

問題: 我熟悉通過將VS附加到ASP.NET工作進程來調試託管的Web服務。如果正在調試的代碼部分不是初始化代碼(如Web服務中的構造函數),則此方法可用。當ASP NET工作進程被創建時,它會調用web服務中的構造函數。因此,當我們連接到VS的ASP NET工作進程時,構造函數已被調用,因此無法進行調試。

我如何連接到ASPNET進程並調試webservice,甚至在它到達webservice中的構造函數之前?

回答

3

幾乎是this的副本。 您可以將Web服務中構造一個

Debugger.Launch(); 

指令被提示輸入一個調試器附加。請參閱MSDN

enter image description here

+0

這是否適合使用服務?我認爲它需要UI權限才能做到這一點,並且服務沒有UI訪問權限。 –

+0

剛剛嘗試過它,它工作正常,但我不確定是否有限制,取決於什麼用戶IIS下運行和什麼OS/IIS版本。 – Strillo

+0

感謝您的有用提示,它也會幫助我。 –

0

這可能不是最好的選擇,但它是唯一的解決辦法我能找到的時候我也有類似的問題。在構造函數中放入一個Thread.Sleep(xxxx),並嘗試在比賽完成初始化之前打敗時鐘並獲得連接。您需要小心,不要將睡眠設置得太高,因爲如果服務在特定的秒數內未初始化,服務可能會停止。 (在你完成初始化函數完成步驟之前,它決定終止服務時也很痛苦,因爲它沒有足夠快地返回。)