2010-08-12 11 views
4

我们有一个站点在IIS6中,我们使用.NET 1.1框架构建。转到此站点的用户只能使用Internet Explorer并使用表单身份验证登录到该站点。在该站点内,用户可以导航到嵌入了iFrame的特定页面。此iFrame指向托管在同一台服务器上的另一个虚拟目录,而此第二个虚拟目录只是简单地将电影文件流下来。假设用户在其计算机上安装了Windows Media Player并对其进行了配置,以便Windows Media Player是默认的电影播放器​​,当用户使用iFrame导航到该页面时,Windows Media Player将弹出一个新窗口并播放电影。为什么Windows Media Player在通过Internet Explorer使用内容时,有时无法在内容请求中包含适当的Cookie?

我们最近升级了我们的软件以使用.NET 3.5框架。但是,我们注意到我们的电影文件不再播放。我们会收到一条消息,指出Windows Media Player无法连接到服务器。

我已经先行一步,并通过使用招完成的客户端和服务器计算机之间的网络通信的一些调查,而这些都是在情景中发生,事情的工作步骤:

1)的Internet Explorer向服务器请求电影文件。请求标头包含正确认证和会话标识所需的cookie。
* GET MYSITE HTTP/1.1
接受:image/jpeg,image/gif,image/pjpeg,application/x-ms-application,application/xaml + xml,application/x-ms-xbap,application/vnd .MS-Excel中,应用程序/ vnd.ms - PowerPoint中,应用程序/ msword,应用程序/ x - 冲击波闪光,/
的Referer:MYREFERRER
接受语言:EN-US
的User-Agent:Mozilla的/ 4.0(兼容; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.2)
Accept-Encoding: gzip,deflate
H ost:MYHOST 连接:Keep-Alive
Cookie:a99fd71e-eb1b-4750-a391-5ad8cfe32068 = 800edb77-9649-4f93-9db9-98d678a3b166; ASP.NET_SessionId = uf1cr1bflwly0nmhbm1wnb55; EDDS = 581A46E81C8DB0B475F1AFE00545F9B157A377BD31DF65BB2AEF7D1B293BDE9E178409FF251CF49F109FDC601C48F15A5FCDE1A29A18E6853357887698A01E7A2CC3690ECE98C464DE1359D796B60BE969F875EF08F638A04CDED78A309ACD6E9732F8C3751A2B0A411ADFA91B0AE567 *

2)服务器使用cookie来验证来自用户的请求,然后返回电影。返回的状态代码是200
HTTP/1.1 200 OK
日期:星期三,2010 21点30分55秒GMT
服务器8月11日:微软IIS/6.0
X供电,通过:ASP.NET
X-ASPNET-版本:1.1.4322
的Content-Length:3934146
的Accept-范围:字节
内容处置:直列;文件名= AS000006。WMV
上次修改:星期二,2010年8月10日21点24分四十九秒GMT
ETag的: “MyExampleFileID”
缓存控制:私人
内容类型:应用/八位字节流

3 )Windows Media Player向服务器发送电影文件的请求。再次,请求标头包含cookie。但是,这次该请求包含字节8192-的范围请求。
* GET MYSITE HTTP/1.1
接受:/
的User-Agent:Windows的媒体播放器/ 12.0.7600.16415
接受编码:gzip,紧缩
范围:字节= 8192-
除非-Modified-Since的:星期二,2010年8月10日21时24分49秒GMT
如果-范围: “MyExampleFileID”
连接:保持活动
主持人:MYHOST
饼干:ASP.NET_SessionId = uf1cr1bflwly0nmhbm1wnb55; EDDS = 581A46E81C8DB0B475F1AFE00545F9B157A377BD31DF65BB2AEF7D1B293BDE9E178409FF251CF49F109FDC601C48F15A5FCDE1A29A18E6853357887698A01E7A2CC3690ECE98C464DE1359D796B60BE969F875EF08F638A04CDED78A309ACD6E9732F8C3751A2B0A411ADFA91B0AE567; a99fd71e-eb1b-4750-a391-5ad8cfe32068 = 800edb77-9649-4f93-9db9-98d678a3b166 *

4)服务器使用cookie信息来验证来自用户的请求,然后返回该文档。返回的状态代码是206
HTTP/1.1 206部分内容
日期:星期三,2010年8月11日21时30分57秒GMT
服务器:Microsoft-IIS/6.0
X-Powered-通过:ASP.NET
X-ASPNET-版本:1.1.4322
内容范围:字节8192-3934145/3934146
的Content-Length:3925954
接受-范围:字节
内容处置:内联;文件名= AS000006.wmv
上次修改:星期二,2010年8月10日21时24分四十九秒GMT
ETag的: “MyExampleFileID”
缓存控制:私人
内容类型:应用/八位字节流

当事情不起作用时,它看起来像这样:

1)Internet Explorer向服务器发出电影文件请求。请求标题包含cookie。
* GET MYSITE HTTP/1.1
接受:image/jpeg,image/gif,image/pjpeg,application/x-ms-application,application/xaml + xml,application/x-ms-xbap,application/vnd .MS-Excel中,应用程序/ vnd.ms - PowerPoint中,应用程序/ msword,应用程序/ x - 冲击波闪光,/
的Referer:MYREFERRER 接受语言:EN-US
的User-Agent:Mozilla的/ 4.0 (兼容; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath。2)
接受编码:gzip,放气
主机:MYHOST
连接:保持活动
的Cookie:a99fd71e-eb1b-4750-a391-5ad8cfe32068 = 7ac4710e-1434-43c9-b521-bdf30328e2fb; ASP.NET_SessionId = glytwo55ztohig451qrf1355; EDDS = CFC5EAE69F6D6CDD0A1D53632F01629F8AC8F4901A6106DD26A0A9F4E1E0B0EC9D4B1B78FBEF5C504A54E6B1A43F576CD846ADD3D394DF257EBBF982BED5E99900116945191268E985ED923DAA78DF4FBD68B09FF3B4D14D7092FB846012E5F464D9EBC4BA834235839A397A4F00B548D353A1AB9B67F6F960E26FC655D19D4B89347DFA2BCC7101E2397AC7EB0F105025E5A21253C0E619E809C1D9B64E53E8 *

2)服务器使用cookie来验证来自用户的请求,然后返回电影。返回的状态代码是一个200
HTTP/1.1 200 OK
缓存控制:私人
的Content-Length:3934146
内容类型:应用/八位字节流
上次修改:星期三,2010 8月11日15点29分44秒GMT
接受-范围:字节
的ETag: “MyExampleFileID”
服务器:Microsoft-IIS/7.5
X-ASPNET-版本:2.0.50727
内容处置: 一致;文件名= AS000006.wmv
X供电,通过:ASP.NET
日期:星期三,2010 8月11日21时36分45秒GMT

3)Windows媒体播放器发出请求到服务器的电影文件。请求不是包含任何cookie。服务器无法对用户进行身份验证,并且电影不会发送失败。
* GET MYSITE HTTP/1.1
接受:/
的User-Agent:Windows的媒体播放器/ 12.0.7600.16415
接受编码:gzip,紧缩
范围:字节= 8192-
除非-Modified-Since的:星期三,2010 8月11日15时29分44秒GMT
如果-范围: “MyExampleFileID”
连接:保持活动
主持人:MYHOST *

所以,在这一点上,我确切知道它为什么不起作用。来自Windows Media Player的请求不包含任何cookie,因此我们的服务器不会验证请求并发送数据。我完全不理解的是,为什么这些cookie在请求时没有被Windows Media Player使用。

以上所有请求都是由同一台机器制作到两个不同的网站,因此我知道这不是Windows Media Player不同版本的问题。我已经在具有不同操作系统和不同版本的IE的多个不同机器上再现了这种行为,因此它似乎与特定机器无关。我已经尝试恢复到IIS6而不是为新网站使用IIS7,并且这也没有什么不同。我一直认为它必须是我的代码中的东西,但我甚至不知道从哪里开始寻找。

我的问题是:有没有人真正了解Internet Explorer如何将URL信息传递给Windows Media Player,并且可能会指出我正确的方向来解决这个问题?我现在唯一的选择是在微软的支持下打开一张票......坦率地说,在过去的几年里,我与他们的支持团队的经验并不尽如人意。任何帮助将不胜感激!

编辑: 使用进程资源管理器,我已经能够证明IE现在根本不提供cookie信息给Windows Media Player。尽管如此,我仍然不理解为什么。

回答

3

经过4位来自微软的支持工程师排除故障后,我们一直没有更加了解这个问题。然后,在我的球队的球员之一,通过这一连接偶然发现:

http://mvolo.com/iis-70-forms-authentication-and-embedded-media-players/

虽然文章中提到的错误消息不是我们看到的一个,他提出和我产生共鸣的解决方案。我们试了一下,幸好它解决了这个问题。

相关问题