【问题标题】:Silverlight ClientHttp WebRequest timeoutSilverlight ClientHttp WebRequest 超时
【发布时间】:2011-03-29 15:30:57
【问题描述】:

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

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

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

任何想法实际发生了什么,我该如何防止它?

谢谢!

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

我把它改回了一个更大的值,现在它可以正常工作了!嗯。

【问题讨论】:

  • 也许你可以用解决方案在这里回答你自己的问题,我错过了这个并花了半天时间试图解决同样的问题,我忽略了未回答的 StackOverflow 问题。

标签: silverlight webrequest clienthttpstack


【解决方案1】:

仅引用 OP 但提供答案:

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

我把它改回了一个更大的值,现在它可以正常工作了!嗯。

【讨论】:

    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多