2010-09-22 182 views
0

我有用C#編寫的Web服務。 池回收期間表現得相當奇怪。在IIS應用程序池回收期間調試應用程序行爲

如果我配置一個包含5個工作進程的池,該進程在說100個請求之後應該回收(在生產中它實際上是10000但是從不知道那個)。我對每個進程的前100個(即500個請求)得到了正確的響應,但是在這之後,一些請求返回了不正確的結果(我也得到超時,但這是可以的,因爲進程正在回收)。

由於這些不正確的結果似乎在回收後發生,而服務啓動時,只需要連接調試器並查看會發生什麼(因爲在發生回收時調試器會被脫離)就很難。

所以我的問題(S)是/是:
1.不要任何人知道調試這種事情的好方法

編輯:2.硬骨素誰碰巧有什麼可能是一個想法錯誤(服務在請求之間沒有狀態信息) - 我發現錯誤,通過附加調試器並幸運地看到一個異常(陷入全局異常處理程序 - 我討厭那些神):但是這個問題依然存在。有沒有比連接調試器更簡單的方法,並希望你及時看到錯誤。

回答

0

我最終做的(現在)是去除大部分「半全局」try/catch/do-nothing處理程序,然後編寫一個SoapExtension來處理「未處理的異常」,並轉儲出所有我可以接近的信息。

我最傑夫·阿特伍德的文章靈感在CodeProject:http://www.codeproject.com/kb/aspnet/ASPNETExceptionHandling.aspx

它不是真的一樣安裝調試,但將有現在要做的。

0

你應該清楚什麼是不正確的結果。如果它不是.NET錯誤,您應該查看您的代碼並在您自己的代碼中添加一些應用程序級別的日誌記錄。

調試器只能幫助你沒有別的辦法時。

+0

嗯,我得到一個空的結果,格式正確,但沒有內容 - 所以很可能是一個空值的地方。代碼是大型庫的一部分,沒有人真正關心正確的日誌記錄,我不會在成千上萬的代碼行中散佈隨機日誌語句來確定我的空值正在「創建」的位置(如果這樣的事情可以說空值)。至少不能,如果我可以附加調試器,並尋找nullreferenceexception(或類似)。 – 2010-09-22 09:28:26

+0

我個人會捕獲異常轉儲並分析原因。但是對於您來說,當您需要專家時,您可以通過http://support.microsoft.com打開支持案例。 – 2010-09-22 09:35:48