我有一个使用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
我把它改回了更大的值,现在它工作正常!第h
答案 0 :(得分:0)
仅仅引用OP但提供答案:
更新:发现问题。有一个注册表项控制系统范围的Web请求超时行为,一些应用程序将其设置为10秒(例如,随处安装)并“忘记”将其设置回来。关键是:HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ ReceiveTimeout
我把它改回了更大的值,现在它工作正常!第h