【发布时间】:2012-05-10 15:27:55
【问题描述】:
我正在编写一个通过 http 使用持久连接的应用程序 - 也就是说,Web 服务器永远不会“完成”对响应流的写入,而客户端应用程序会在响应流进入时从响应流中读取数据。
我编写了一些 .NET 3.5 桌面/winforms 应用程序来确认服务器和客户端代码工作正常,然后编写了一个 windows phone 应用程序来做同样的事情。桌面/电话代码之间的唯一区别是我在电话上将 AllowReadStreamBuffering 属性设置为 false。
电话应用程序昨晚工作,但今天它不工作 - 尝试读取响应流时,它会挂起,直到从服务器端关闭连接 - 这意味着 HttpWebRequest 不支持 AllowReadStreamBuffering 设置。
昨晚和现在的区别在于,昨晚我使用的是 wifi,而今天我使用的是蜂窝网络。
我的假设是,在手机上,HttpWebRequest 仅在连接是 wifi(也可能是以太网)时尊重 AllowReadStreamBuffering = false,但在使用蜂窝网络时它会忽略它并缓冲。
那么当通过蜂窝连接时,HttpWebRequest 是否会强制读取流缓冲?我还没有找到任何证实这种行为的文档,所以我想知道是否有其他人经历过这种情况。稍后我将能够对此进行更彻底的测试,但现在我想我会问这个问题。
2012 年 5 月 11 日更新
测试并回答了我自己的问题(见下文)
【问题讨论】:
标签: http windows-phone-7 persistent-connection