2011-01-27 126 views
2

我有一個應用程序調用高頻率的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

不過,我仍然得到錯誤。我相信服務電話並不需要那麼長時間。有任何想法嗎?

+0

只是爲了確認wcf調用實際上並沒有花費那麼長時間,我創建了一個web方法,該方法什麼都不做,並從測試用例中多次調用它。幾分鐘後,它開始產生上面的超時錯誤。是否有一些我在IIS 7中達到的最大連接數限制? – Justin 2011-01-27 16:19:37

+0

有一個連接的限制,但它處理一個處理器的核心數量,所以你有一個不同的問題。在這個問題中寫入服務的配置和方法體。 – vorrtex 2011-01-27 20:42:04

回答

0

問題是數據庫超時導致WCF超時。