У нас есть сайт, размещенный в IIS6, который мы создали с помощью .NET 1.1 Framework.Пользователи, которые заходят на этот сайт, используют исключительно Internet Explorer и входят в него, используя проверку подлинности с помощью форм.Внутри сайта пользователи могут переходить на определенную страницу, в которую встроен iFrame.Этот iFrame указывает на другой виртуальный каталог, размещенный на том же сервере, и этот второй виртуальный каталог просто выполняет потоковую передачу файла фильма.Предполагая, что у пользователя установлен проигрыватель Windows Media на его компьютере, и он настроен так, что проигрыватель Windows Media является проигрывателем фильмов по умолчанию, когда пользователь переходит на страницу с iFrame, проигрыватель Windows Media открывает новое окно и воспроизводит фильм.
Мы недавно обновили наше программное обеспечение до платформы .NET 3.5.Однако мы заметили, что наш файл фильма больше не воспроизводится.Вместо этого мы получаем сообщение о том, что проигрыватель Windows Media не может подключиться к серверу.
Я продвинулся вперед и провел некоторое исследование сетевого трафика между клиентскими и серверными машинами с помощью Fiddler, и это шагиэто происходит в сценарии, где все работает:
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, application / vnd.ms-powerpoint, application / msword, application / x-shockwave-flash, /
Referer: MYREFERRER
Accept-Language: en-US
Пользователь-агент: 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
Хост: MYHOST Соединение: Keep-Alive
Cookie: a99fd71e-eb1b-4750-a391-5ad8cfe32068 = 800edb77-9649-4f93-9db9-98d678a3b166;ASP.NET_SessionId = uf1cr1bflwly0nmhbm1wnb55;EDDS = 581A46E81C8DB0B475F1AFE00545F9B157A377BD31DF65BB2AEF7D1B293BDE9E178409FF251CF49F109FDC601C48F15A5FCDE1A29A18E6853357887698A01E7A2CC3690ECE98C464DE1359D796B60BE969F875EF08F638A04CDED78A309ACD6E9732F8C3751A2B0A411ADFA91B0AE567
1020 *
2) Сервер использует куки для аутентификации запроса от пользователя, а затем возвращает фильм.Код состояния возврата - 200. HTTP / 1.1 200 OK
Дата: ср., 11 августа 2010 г. 21:30:55 GMT
Сервер: Microsoft-IIS / 6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 1.1.4322
Content-Length: 3934146
Accept-Ranges: байты
Content-Disposition: inline;имя_файла = AS000006.wmv
Дата последнего изменения: вторник, 10 августа 2010 г. 21:24:49 GMT
ETag: "MyExampleFileID"
Контроль кэша: частный
Тип содержимого: application / octet-stream 3) Проигрыватель Windows Media делает запрос на файл фильма на сервере.Опять же, заголовок запроса содержит куки.Однако в этот раз запрос включает запрос Range для байтов 8192 -.
* GET MYSITE HTTP / 1.1
Принимать: /
User-Agent: Windows-Media-Player / 12.0.7600.16415
Accept-Encoding: gzip, deflate
Диапазон: байты = 8192-
Unless-Modified-Since: Вт, 10 августа 2010 21:24:49 GMT
If-Range: "MyExampleFileID"
Соединение: Keep-Alive
Хост: MYHOST
Cookie: ASP.NET_SessionId = uf1cr1bflwly0nmhbm1wnb55;EDDS = 581A46E81C8DB0B475F1AFE00545F9B157A377BD31DF65BB2AEF7D1B293BDE9E178409FF251CF49F109FDC601C48F15A5FCDE1A29A18E6853357887698A01E7A2CC3690ECE98C464DE1359D796B60BE969F875EF08F638A04CDED78A309ACD6E9732F8C3751A2B0A411ADFA91B0AE567;a99fd71e-eb1b-4750-a391-5ad8cfe32068 = 800edb77-9649-4f93-9db9-98d678a3b166 *
4) Сервер использует информацию cookie для проверки подлинности запроса от пользователя, а затем возвращает документ.Код статуса возврата - 206.
HTTP / 1.1 206 Частичное содержимое
Дата: среда, 11 августа 2010 г. 21:30:57 GMT
Сервер: Microsoft-IIS / 6.0
X-Powered-By: ASP.NET
X-AspNet-версия: 1.1.4322
Диапазон содержимого: байты 8192-3934145 / 3934146
Длина содержимого: 3925954
Диапазон принятия: байты
Расположение содержимого: встроенное;имя_файла = AS000006.wmv
Дата последнего изменения: вторник, 10 августа 2010 г. 21:24:49 GMT
ETag: "MyExampleFileID"
Контроль кэша: частный
Тип содержимого: application / octet-stream
Когда что-то не работает, это выглядит так:
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, application / vnd.ms-powerpoint, application / msword, application / x-shockwave-flash, /
Ссылка: MYREFERRER Accept-Язык: en-US
Пользовательский агент: 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 CLR3.0.30729; InfoPath.2)
Accept-Encoding: gzip, deflate
Хост: MYHOST
Соединение: Keep-Alive
Cookie: a99fd71e-eb1b-4750-a391-5ad8cfe32068 = 7ac4710e-1434-43c9-B521-bdf30328e2fb;ASP.NET_SessionId = glytwo55ztohig451qrf1355;EDDS = CFC5EAE69F6D6CDD0A1D53632F01629F8AC8F4901A6106DD26A0A9F4E1E0B0EC9D4B1B78FBEF5C504A54E6B1A43F576CD846ADD3D394DF257EBBF982BED5E99900116945191268E985ED923DAA78DF4FBD68B09FF3B4D14D7092FB846012E5F464D9EBC4BA834235839A397A4F00B548D353A1AB9B67F6F960E26FC655D19D4B89347DFA2BCC7101E2397AC7EB0F105025E5A21253C0E619E809C1D9B64E53E8
1089 *
2) Сервер использует куки для аутентификации запроса от пользователя, а затем возвращает фильм.Код состояния возврата - 200. HTTP / 1.1 200 OK
Cache-Control: private
Content-Length: 3934146
Content-Type: application / octet-stream
Дата последнего изменения: среда, 11 августа 2010 г. 15:29:44 GMT
Диапазон принятия: байты
ETag: «MyExampleFileID»
Сервер: Microsoft-IIS / 7.5
X-AspNet-версия: 2.0.50727
Content-Disposition: встроенный;имя_файла = AS000006.wmv
X-Powered-By: ASP.NET
Дата: среда, 11 августа 2010 г. 21:36:45 GMT 3) Проигрыватель Windows Mediaделает запрос на сервер для файла фильма.Запрос НЕ содержит файлы cookie.Сервер не может аутентифицировать пользователя, и фильм не отправляется.
* GET MYSITE HTTP / 1.1
Принимать: /
User-Agent: Windows-Media-Player / 12.0.7600.16415
Accept-Encoding: gzip, deflate
Диапазон: байты = 8192-
Unless-Modified-Since: Ср, 11 августа 2010 15:29:44 GMT
If-Range: «MyExampleFileID»
Соединение: Keep-Alive
Хост: MYHOST *
Итак, на данный момент я точно знаю, почему он не работает.Запрос от проигрывателя Windows Media не содержит файлов cookie, поэтому наш сервер не будет проверять подлинность запроса и отправлять данные.Я совершенно не понимаю, почему эти файлы cookie не используются проигрывателем Windows Media, когда он отправляет запрос.
Все вышеперечисленные запросы были отправлены с одного компьютера на два разных сайта, поэтомуЯ знаю, что это не проблема с различными версиями Windows Media Player.Я воспроизвел поведение на нескольких разных машинах с разными операционными системами и разными версиями IE, поэтому, похоже, это не связано с конкретной машиной.Я попытался вернуться к IIS6 вместо использования IIS7 для нового сайта, и это тоже не имеет значения.Мне кажется, что это должно быть что-то в моем коде, но я даже не знаю, с чего начать.
Мой вопрос: кто-нибудь действительно понимает, как Internet Explorer передает информацию об URL-адресе в проигрыватель Windows Media, и, возможно, указывает мне правильное направление, чтобы выяснить это? Единственный другой вариант на данный момент - открыть заявку в службу поддержки Microsoft ... и, честно говоря, мой опыт работы с их командой поддержки за последние несколько лет был неоптимальным. Буду признателен за любую помощь!
EDIT:
Используя проводник процессов, я смог доказать, что IE сейчас просто не предоставляет информацию о файлах cookie для проигрывателя Windows Media. Я все еще не ближе к пониманию почему, хотя.