【发布时间】:2012-05-03 15:30:04
【问题描述】:
我有一个 ASP.NET Web 应用程序,其中页面上的 Microsoft Media Player 对象(在 IE 中)正在发出对 .aspx 网页的请求。在页面中,我使用TransmitFile 发回音频文件。这在大多数情况下都可以正常工作。
但是,在某些情况下(IE 版本和特定客户端的组合,至少从我所见)会发出第二个请求,其 URL 完全相同。我可以看到的第一个和第二个请求之间的唯一区别是用户代理值。第一个请求将具有User-Agent: Windows-Media-Player/9.00.00.4508,第二个请求将具有User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
第二个请求导致音频文件通过网络第二次发送,这是一种浪费。这是我试图避免的。
我有一个相关的问题here,但在这种情况下没有 Range 请求。它再次是完全相同的请求(相同的标头,除了用户代理)。
我试图用各种 HTTP 状态响应(304、404、500 等)来抑制第二个响应(基于标头中的用户代理)。这有时适用于某些客户端,但是偶尔中断(媒体播放器不会播放音频,即使 Fiddler 会在第一次请求时显示它已传输)。
如果可能,我想“说服”浏览器避免第二个请求。作为第二种选择,我想找到对第二个请求的响应,该响应不会中断播放,但避免发送整个音频缓冲区。
【问题讨论】:
标签: asp.net http internet-explorer-8 httpresponse windows-media-player