我有一个 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)
这第二个请求导致音频文件第二次通过网络发送,这是一种浪费。这是我试图避免的。
我在这里有一个相关的问题,但在这种情况下,没有 Range 请求。它再次是完全相同的请求(相同的标头,除了用户代理)。
我试图用各种 HTTP 状态响应(304、404、500 等)来抑制第二个响应(基于标头中的用户代理)。这有时适用于某些客户端,但偶尔会中断(媒体播放器不会播放音频,即使 Fiddler 会显示它是在第一次请求时传输的)。
如果可能的话,我想“说服”浏览器避免第二个请求。作为第二种选择,我想找到对第二个请求的响应,该响应不会中断播放,但避免发送整个音频缓冲区。