2011-05-15 190 views
0

我正在修改WCF服務以增加Silverlight客戶端的超時時間。在修改超時之前,我看到CommunicationObjectAborted異常(對[URL]的HTTP請求被中止)。起初我只修改了WCF的web.coffig,並沒有任何效果。然後,我跟着這篇文章(http://blog.ecofic.com/?p=379)並編輯了ServiceReferences.ClientConfig。現在我看到一個沒有端點異常。客戶端連接到WCF後不會立即拋出異常,但在連接到WCF約1分鐘後纔會拋出異常。我懷疑它與超時有關?WCF超時(HTTP請求被中止/沒有端點偵聽)

我在兩個配置文件中設置了打開,關閉,發送和接收超時到5分鐘。

有什麼想法?謝謝!

+0

經過一番測試後,我發現服務器端(web.config)的超時設置似乎沒有效果。如果我從web.config中刪除超時設置,我得到了同樣的異常(未找到端點)。 – Jim 2011-05-15 15:35:06

回答

1

正如理查德指出的那樣,只需要在客戶端(本例中爲您的Windows Phone應用程序)上設置sendTimeout。仔細檢查ServiceReferences.clientConfig,因爲手動添加的值可能會被Visual Studio覆蓋。

另外,您可以在Windows Phone(模擬器)上使用Fiddler檢查this post

+0

感謝提琴手的建議。 sendTimeout設置正確。 – Jim 2011-06-22 02:53:33

0

您應該使用Fiddler來分析您的應用程序執行的請求。通過這種方式,您將能夠知道發送請求時發生了什麼,發送的是何處(如果發送的話)以及服務器的響應代碼。

獲取這些信息是解決問題的第一步。

+0

我確信請求確實已經被客戶端發送到正確的端點(不管什麼超時設置)。現在我懷疑可能會有一些WCF在一分鐘後關閉端點。所以即使沒有超時,端點也不見了,因此「找不到端點」異常。 – Jim 2011-05-16 08:12:34

+0

另一個有趣的地方是,根據MSDN上的一些帖子,在大多數情況下,只有sendTimeout需要增加。但是,增加超時無效(相同的CommunicationObjectAborted異常)。 – Jim 2011-05-16 08:14:15

+0

sendTimeout是一個發送者配置值,在這種情況下只需要在客戶端上設置。你確定你的發送超時增加了嗎?創建代理後查看綁定並查看sendTimeout設置爲 – 2011-06-17 11:30:27