0

我正在尝试编写一个 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 类型的辅助请求。这也包含一个类似的字典,我希望它也无法接受两个相同的编译指示值而不覆盖另一个。

我错过了什么吗?

4

2 回答 2

0

没有Pragma 标头的事实使我认为它们可能不会被发送。我建议你使用 Fiddler 来观察网络流量,以确保它们被发送给你。

于 2009-04-07T10:53:42.280 回答
0

你是如何访问的Request.HeadersNameValueCollection处理多个标题的情况,但您必须使用正确的成员来访问它们:

string[] values = context.Request.GetValues("Pragma");

(索引属性本质上执行一个join(','...)有多个值的地方)。

于 2009-04-07T10:56:51.023 回答