【问题标题】:Second request from Media Player in a web page来自网页中媒体播放器的第二个请求
【发布时间】: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


    【解决方案1】:

    到目前为止,我唯一能想到的可能是他们安装了一个插件/工具栏,当它检测到媒体时试图做一些事情。

    我认为 VLC 为 Firefox 做了类似的事情,而且我知道有很多用于 Firefox 的“视频下载器”类型的插件,也许有为 IE 制作的等价物。

    您可以尝试让有问题的客户给您他们的插件列表(在 IE8 中应该是Tools -> Manage Add-ons)。

    希望这会有所帮助:)

    编辑:您可以检查的另一件事是要求他们尝试在您的网站上启用兼容模式,看看它是否会改变任何东西。

    【讨论】:

    • 我什至在这里的多台机器上都遇到了这个问题(不仅在客户机器上)。其中一些具有全新安装的香草 IE。
    【解决方案2】:

    请提供完整的标头转储,您确定这两个请求都是 GET 吗? 第一个请求可能只是检查缓存版本是否足够好。

    第二个想法:尝试返回 'expires' 标头以抑制缓存检查。

    【讨论】:

    • 现在无法获取标题。但他们都是GET。这是 IIS 日志: 2010-10-13 17:53:51 192.168.0.66 GET /sm62/controls/UMP/audioStream.aspx 200 Windows-Media-Player/9.00.00.4508 2010-10-13 17:53:51 192.168.0.66 GET /sm62/controls/UMP/audioStream.aspx 200 Mozilla/4.0+(兼容;+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)
    猜你喜欢
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多