我有一個ASP.NET Web窗體應用程序,它在內部對Web服務進行了許多SOAP和REST調用。 SOAP調用使用微軟自己的「包裝」代碼。 REST調用來自一個簡單的REST客戶端。該客戶端使用Using塊來處理任何資源。WebRequest和資源 - ASP.NET超時
該應用程序運行良好幾個小時,但然後掛斷。該網站將不再能夠提供asp.net頁面。我通過在上面放置了一個hello.htm文件來測試這個站點......它服務的很好。所以這絕對是ASP.NET引擎空間中的一個問題。
感覺就像它已經用完了池中的webrequests。我可以走了。我可以嘗試什麼?我應該看什麼?需要數小時才能完成問題重現。 在IIS上重新啓動站點可以解決問題,但是cource不是我們可以接受的修復。
啓動錯誤和堆棧跟蹤:
'/'應用程序中的服務器錯誤。
該操作已超時 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。
異常詳細信息:System.Net.WebException:操作已超時
源錯誤:在當前web請求的執行過程中生成 未處理的異常。關於異常的來源和位置的信息可以使用下面的異常堆棧跟蹤來標識。
堆棧跟蹤: [引發WebException:操作已超時] System.Net.HttpWebRequest.GetRequestStream()5322142 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(字符串方法名,對象[]參數) +103
UPDATE等詳細信息
的自產自銷的REST調用和SOAP都做同步。
他們並不長壽,他們需要約1秒。
Web服務託管在同一個數據中心內的Tomcat服務器(不同機器)上。
.NET應用程序在Tomcat服務器上調用SOAP和REST服務。
該應用程序以某種方式在大約停留一小時之後自行修復。思考? 如何監視.NET Threadpool? DefaultConnectionLimit會影響自發出站連接嗎?
解決方案 看到答案補充意見和...... 1)關閉所有流和反應/從自產自銷的REST代碼請求(哎呀)
2)System.Net.ServicePointManager.DefaultConnectionLimit = 96;
//默認值= 12次內核數量
System.Net.ServicePointManager。MaxServicePointIdleTime = 3000;
//默認= 100000(100秒),
通過固定的任何滲漏代碼和超時的空閒時間更快的一切似乎
您對外部SOAP服務有任何使用限制嗎?追蹤它所調用的服務,看看您是否可以在練習中多次擊中它。所有頁面都會調用同一個服務嗎?所有的SOAP調用都會失敗還是隻有這個? – 2010-07-26 19:52:30
我可以使用WinForms客戶端和另一個ASP.NET Web應用程序(同一個IIS)從同一個盒子中找到它。所有從此IIS站點調用REST或SOAP超時。應用程序日誌將其列爲WebException超時 – BuddyJoe 2010-07-26 20:02:09
如何檢查此應用程序佔用了多少內存?我還不熟悉導航IIS 7或win2008 – BuddyJoe 2010-07-26 20:05:02