我正在尝试编写一个IHttpHandler,它可以处理来自Windows Media Player / Silverlight的流媒体请求。这意味着响应这样的原始HTTP请求(取自协议文档)
"GET /ms/contoso_100_files/0MM0.wmv HTTP/1.0"
"Accept: */*"
"User-Agent: NSPlayer/4.1.0.3925"
"Host: netshow.micro.com"
"Pragma: no-cache,rate=1.000000,stream-time=0,stream-offset=0:0,request-context=1,max-duration=0"
"Pragma: xClientGUID={2200AD50-2C39-46c0-AE0A-2CA76D8C766D}"
当我进入ProcessRequest方法时,context.Request.Headers集合似乎没有公开Pragma值。此外,它永远不会真正做到这一点,因为有两行具有相同的键(Pragma)!
我假设如果我能得到原始数据包,我可以手动解析这些数据包。
那就是说,我要做的下一件事就是构造一个HttpWebRequest类型的辅助请求。这也是一个类似的字典,我希望它也不能接受两个相同的pragma值而不会覆盖另一个。
我错过了什么吗?
答案 0 :(得分:0)
没有 Pragma标头的事实让我觉得它们可能没有被发送。我建议您使用Fiddler观看网络流量,以确保它们被发送给您。
答案 1 :(得分:0)
您如何访问Request.Headers
? NameValueCollection
处理多个标题的情况,但您必须使用正确的成员来访问它们:
string[] values = context.Request.GetValues("Pragma");
(index属性基本上执行join(','...)
,其中有多个值。)