Silverlight ClientHttp WebRequest超时

adr*_* h. 5 silverlight webrequest clienthttpstack

我有一个使用ClientHttp堆栈的silverlight 4应用程序来创建一个服务于二进制流的WebRequest.然后我从这个流中读取并做了一些事情.但是,我有以下问题:服务器缓冲它发送的数据,因此发送过程就像send-pause-send-pause-send ...

有时服务器暂停一段时间(大约20秒),此时连接似乎以某种方式中断.我在Silverlight中没有任何异常,实际上对于代码来说,它看起来像是从Web响应流中读取完成了(即没有更多数据).但是,服务器实际上并没有发送所有数据(我可以从非Silverlight应用程序测试,该应用程序将在该暂停后获得更多数据).我认为这可能是一些超时问题(从我读到的内容无法明确地在Silverlight中设置),但奇怪的是我没有得到指示超时的异常.此外,暂停时间不长,我希望20秒是合理的时间.

我还查看了TCP流量,看起来像暂停后,Silverlight会向服务器发送FIN消息.所以它似乎有点超时并决定打破连接,但它实际上并没有将超时报告为异常,或者给我任何方法来避免它.

任何想法实际发生了什么,我怎么能阻止它?

谢谢!

更新:发现问题.有一个注册表项控制系统范围的Web请求超时行为,一些应用程序将其设置为10秒(例如,随处安装)并"忘记"将其设置回来.关键是:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ReceiveTimeout

我把它改回了更大的价值,现在它工作正常!心连心.

小智 0

仅引用OP但提供答案:

更新:发现问题。有一个注册表项控制系统范围的 Web 请求超时行为,某些应用程序将其设置为 10 秒(例如 Install Anywhere),然后“忘记”将其设置回来。关键是这样的:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ReceiveTimeout

我把它改回更大的值,现在它工作正常了!哈。