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