2009-06-23 102 views
1

我想調試一個.NET運行在Windows Mobile 6上的.net壓縮框架應用程序的問題。當我在開發計算機上調用一個Web服務調用時,會出現這個問題。如何阻止客戶端/調用者拋出的Web服務中的異常?

我不需要任何實際的錯誤幫助,但在正確的時間調用調試器。

我在調試模式下運行web服務,並能夠在Visual Studio中觸發斷點,因此我知道它已連接好。我遇到的問題是,當我的Web服務引發異常時,Web服務調用立即結束,異常文本出現在我的移動客戶端屏幕上。我真正想要發生的是該異常導致Visual Studio中斷執行並允許我使用調試器進行進一步調查。正如您可能想象的那樣,無法獲取行號是非常令人沮喪的,因爲我必須逐行逐行執行代碼,直到移動客戶端上出現異常。

我在網上看過你如何將異常轉化爲SOAP傳輸給遠程客戶端,我認爲這個可能是是發生了什麼,但我不希望它!

回答

1

似乎Visual Studio只處理'未處理'異常,但從我可以收集的內容來看,調用我的Web服務方法的代碼將它包裝在try..catch中,處理錯誤並將其傳遞給客戶端通過SOAP。

如果您在Visual Studio中進入Debug-> Exceptions ...,那麼會出現一些複選框來強制Visual Studio調用.NET框架中處理的異常調試器 - 檢查Common中的「拋出」列語言運行時異常,然後它正確地拿起它!

0

在應用程序中發生異常(它如何處理webservice調用的結果),還是發生在遠程服務中,並且異常正在傳回?

作爲臨時解決方法,您可以嘗試在Try/Catch塊中封裝web服務調用,然後再從Catch部分再次調用它,並在調用中創建一個斷點。這樣,當它第一次失敗時,執行將在第二次調用時中斷,這樣你就可以進入它或者檢查所有你想要的值,而無需通過你的代碼到達那個點。

+0

這絕對是在網絡服務中發生的。實際的錯誤來自只發生在Web服務中的sql服務器調用。我剛剛向同事展示過,他同意這是奇怪的行爲。 客戶端的額外try-catch包裝器在這個實例中並沒有真正的幫助,因爲我需要通過在我的web服務上拋出的異常來觸發visual studio調試器。 – 2009-06-23 14:54:28

+0

啊 - 我在想你的應用只是報告異常,而不是正確處理它。因爲它來自服務器,所以現在它是有道理的。 – SqlRyan 2009-06-23 15:31:28

相關問題