Принудительная загрузка файла в IE для исполняемого файла .NET? - PullRequest
2 голосов
/ 27 августа 2010

У нас есть исполняемый файл .NET, который мы размещаем на веб-сервере. Домен для веб-сервера установлен как «Надежный сайт» в IE пользователя.

Когда пользователь щелкает левой кнопкой мыши ссылку на исполняемый файл, он взрывается с ошибкой: «Оболочка Microsoft IE Execute обнаружила проблему и должна быть закрыта». Из того, что я прочитал, это потому, что IE пытается выполнить файл напрямую с помощью ieexec.exe.

Что желательно, так это то, что пользователь должен получить всплывающее окно с предупреждением безопасности, спрашивающим его, хотят ли они загрузить .exe, и кнопками «Выполнить», «Сохранить», «Отмена». Не загадочное исключение безопасности. Временное решение: щелкните правой кнопкой мыши и выберите «Сохранить объект как…».

Конечно, это взрывается только в IE, а не в Firefox или Chrome.

Как мне скомпилировать исполняемый файл .NET, чтобы обойти этот файл ieexec.exe и заставить запрос на загрузку файла?

Ответы [ 3 ]

4 голосов
/ 27 августа 2010

Не зная, к какой конкретной технологии .NET у вас есть доступ, трудно быть уверенным в ответе, однако вы можете найти это полезным.

Если вы обслуживаете контент в ASP.NET,Вы можете установить расположение и тип содержимого, чтобы поощрять правильную обработку из браузера:

Response.AppendHeader("content-disposition", "attachment; filename=myexe.exe");
Response.ContentType = "application/octet-stream";

Вот старый, но достаточно применимый пример онлайн-контроля HttpResonse в ASP.NET:

http://aspalliance.com/259

0 голосов
/ 16 июня 2012

Что ж, этого можно достичь, добавив обработчик событий onclick на кнопку привязки / ввода или любой другой элемент управления, который вы использовали для загрузки .exe

Добавьте этот JavaScript:

onclick=javascript:setTimeout(window.location=[File location], 1000);
0 голосов
/ 27 августа 2010

Возможно, это не самое простое решение, но я считаю, что оно должно работать: перенаправить файл в сценарий, и этот сценарий должен задать заголовок расположения содержимого и вывести файл.В случае, если это неясно, я приведу пошаговое описание ниже.В пошаговом руководстве я предполагаю использование apache со средой php, но то же самое должно быть возможно в любой приличной среде.

Сначала мы установим правило mod_rewrite на вашем веб-сервере, чтобыпередайте загрузку в php-файл:

.htaccess

RewriteEngine On
RewriteRule ^file.exe$ file.php

Затем мы установим php-файл с соответствующими заголовками, включим содержимое-расположение заголовка и включение файла.

file.php

<?php

header("Content-disposition: attachment; filename=file.exe");
header("Content-type: application/octet-stream");

echo file_get_contents('file.exe');
?>

И это должно сказать браузеру, что он не должен рассматривать что-либо, кроме как его загрузку.Я не пробовал, правильно ли IE уважает заголовок, но таким образом вы говорите ему загрузить рассматриваемый файл.

...