2011-03-29 59 views
5

我有使用ClientHttp堆,使供應的二進制流的WebRequest的一個Silverlight應用程序4。然後,我從這個流中讀取並做些東西。不過,我有以下問題:服務器緩存,它向下發送數據,使發送過程就像發送-暫停發送,暫停發...的Silverlight ClientHttp的WebRequest超時

有時服務器需要長一點停頓(大約20秒),此時連接似乎以某種方式中斷。我沒有在Silverlight中遇到任何異常,實際上,對於代碼來說,它看起來像從Web響應流中讀取完成(即沒有更多數據)。但是,服務器並沒有真正發送所有的數據(我可以從非Silverlight應用程序測試該數據,以便在暫停後獲取更多數據)。我在想這可能是一些超時問題(從我讀的東西中無法明確地在Silverlight中設置),但奇怪的是我沒有得到指示超時的異常。而且,暫停時間並不長,我預計20秒是合理的時間。

我也看了看TCP流量,看起來像暫停後,Silverlight中發送一個FIN消息發送到服務器。因此,它似乎有點超時,並決定中斷連接,但實際上並沒有將超時報告爲異常,或給我任何方式來避免它。

任何想法實際上是怎麼回事,我怎麼能阻止它?

謝謝!

更新:發現問題。有一個註冊表項用於控制系統範圍的Web請求超時行爲,有些應用程序將其設置爲10秒(例如「安裝到任何地方」)並「忘記」將其設置回來。關鍵是:HKEY_CURRENT_USER \ SOFTWARE \微軟\的Windows \ CurrentVersion \ Internet設置\ ReceiveTimeout

我改回了一個更大的價值,現在,它工作得很好!心連心。

+0

也許你可以在這裏用解答回答你自己的問題,我錯過了這個,花了半天的時間試圖解決同樣的問題,我忽略了沒有答案的StackOverflow問題。 – Andronicus 2012-01-04 16:03:13

回答

0

僅僅引用了OP,但提供了一個答案:

UPDATE:發現問題。有一個註冊表項用於控制系統範圍的Web請求超時行爲,有些應用程序將其設置爲10秒(例如「安裝到任何地方」)並「忘記」將其設置回來。關鍵是:HKEY_CURRENT_USER \ SOFTWARE \微軟\的Windows \ CurrentVersion \ Internet設置\ ReceiveTimeout

我改回了一個更大的價值,現在,它工作得很好!心連心。