IE8 не загрузит файл пользовательской пантомимой/типом с включенным контролем учётных записей

У меня есть услуги .NET, работающие на локальной машине (Windows 7 x64, IE8, .net 3.5, C#), который возвращает файл браузеру в ответ на пользовательское действие. Используя Firefox или хром, файл загружается правильно, и наше приложение запущено через пользовательский тип пантомимы, и все хорошо.

Однако с IE8, я получаю диалоговое окно, "не могущее загружать файл с. Не удалось открыть этот сайт. Требуемый сайт или недоступен или не может быть найден. Попробуйте еще раз позже".

Используя скрипача, я проверил, что IE действительно получает полезную нагрузку от сервиса.

Если я выключаю контроль учётных записей, IE действительно загружает файл и запускает связанное приложение.

Выключение контроля учётных записей не является эффективным решением, поскольку нашим клиентам включат его.

Как я могу добраться, IE8 для запуска связанного приложения с контролем учётных записей включил?

Править:

После перерегистрации пантомимы вводят с программным идентификатором, как описано здесь, я могу заставить IE открывать шоу "Открытый или Сохранять" диалоговое окно во ВТОРОЙ РАЗ, когда ссылку требуют от строки поиска. Почему это не работает в первый раз?

5
задан Jeff Paquette 8 February 2010 в 16:41
поделиться

2 ответа

Сегодня я смог решить этот вопрос. Получается, что за кодом находилось свойство CacheControl ответа на HttpCacheability.NoCache. Удаление этой строки кода решило проблему. Вторая половина исправления корректно регистрировала тип пантомимы и расширение файла в ProgId.

Я удалил ответ только на content-disposition: attachment; fileename=xxx и двоичную запись строковых данных. IE корректно отображал диалог Open or Save, даже если снифф пантомимы сообщал файл как text/html (что на самом деле должно было быть text/plain).

Я добавил обратно заголовок типа содержимого и перепроверил, затем опцию nosniff, перепроверил и, наконец, управление кэшем. В промежутках между каждым тестом я перезагружал ВМ, чтобы убедиться, что это была первозданная тестовая среда (т.е. ничего не кэшировалось и не загружалось). Только линия управления кэшем отрицательно повлияла на поведение.

5
ответ дан 14 December 2019 в 04:38
поделиться

Из MSDN

Если Internet Explorer знает указанный тип Content-Type и нет данных Content-Disposition, то Internet Explorer выполняет "MIME-снифф", сканируя первые 200 байт файла, чтобы определить, совпадает ли структура файла с какими-либо известными типами MIME. Дополнительную информацию о MIME сниффе можно найти в разделе Обнаружение типов MIME в Internet Explorer. Если MIME снифф обнаруживает MIME тип, известный Internet Explorer, и файл еще не был загружен мимефильтром, Internet Explorer устанавливает это расширение файла перед помещением файла в локальный кэш браузера.

Наконец, если нет данных Content-Type или Content-Disposition, а MIME снифф не распознает известный MIME тип, то расширение файла устанавливается в то же самое расширение, что и URL-адрес, используемый для загрузки файла.

Если в заголовке HTTP файл помечен как "content-disposition=attachment", Internet Explorer рассматривает имя файла из URL как окончательное и не переименовывает его перед помещением в кэш.

content-disposition=attachment - это решение ?!?

/Erling Damsgaard DNS-IT ApS

1
ответ дан 14 December 2019 в 04:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: