我有一个Silverlight OOB应用程序,它使用HttpWebRequest使用HTTP 1.1的范围标题以“块”下载文件。
我们的一些用户拥有PC或使用仅支持HTTP 1.0的代理,因此此标头/功能不可用。这导致客户端尝试一次性下载非常大的文件,而不是在较小的“块”中。这极大地影响了应用程序的使用体验,我想在这个实例中实现替代功能。
不幸的是,Silverlight不支持HttpWebResponse.ProtocolVersion,所以我无法轻易检测到客户端是否不支持范围标题。
有没有办法检测Silverlight中使用的HTTP版本? (访问原始HTTP响应?)
或者我是否需要在服务器上检测到这一点并正确通知Silverlight客户端?
答案 0 :(得分:1)
如果在Silverlight中使用ClientHTTP堆栈,则可以访问响应对象的Headers
集合。这不会让您检测协议版本,但是它应该允许您检测“Accept-Ranges”标头是否存在并且值为“bytes”。
因此,对服务器上的某些静态无缓存资源的测试请求可能允许您检测基于范围的请求是否可接受。