我有一個應用程序調用高頻率的WCF服務。該應用程序開始工作正常,然後幾分鐘後,每個電話開始產生此錯誤:WCF請求通道超時錯誤
System.TimeoutException:請求頻道超時嘗試發送後00:02:00。增加傳遞給請求調用的超時值或增加綁定上的SendTimeout值。
我用盡了一切我能想到的來解決這個錯誤,如:
- 上的服務設置多個concurrencymode:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)] public class ListingService : IListingService
- 設置服務web.config中最大併發呼叫/會話/實例的上限:
serviceThrottling maxConcurrentCalls="100000" maxConcurrentSessions="100000" maxConcurrentInstances="100000"
- 對服務的Global.asax的設置上的Application_Start更高servicepointmanager defaultconnectionlimit:
protected void Application_Start(object sender, EventArgs e) { System.Net.ServicePointManager.DefaultConnectionLimit = 100000; }
- 確保我關閉客戶端連接:
using (var client = new ListingServiceClient()) { client.SaveListing(listing); client.Close(); }
這裏是服務的web.config - http://pastebin.com/d9qtZUKN
不過,我仍然得到錯誤。我相信服務電話並不需要那麼長時間。有任何想法嗎?
只是爲了確認wcf調用實際上並沒有花費那麼長時間,我創建了一個web方法,該方法什麼都不做,並從測試用例中多次調用它。幾分鐘後,它開始產生上面的超時錯誤。是否有一些我在IIS 7中達到的最大連接數限制? – Justin 2011-01-27 16:19:37
有一個連接的限制,但它處理一個處理器的核心數量,所以你有一個不同的問題。在這個問題中寫入服務的配置和方法體。 – vorrtex 2011-01-27 20:42:04