Из-за проблем с заголовком Content-Disposition (кодировка символов, кросс-браузерная поддержка) я решил попробовать другой способ динамического обслуживания файлов.
А именно, я перенаправляю запрос на что-то вроде:
localhost/Download/Page.aspx/filename-without-extension
для того, чтобы браузер забрал имя файла в конце.
Я также предоставляю правильный заголовок Content-Type (как определено моим оторванным классом System.Web.MimeMapping).
Теперь для ZIP-файлов это на самом деле работает нормально. Браузер предлагает сохранить файл с расширением .zip.
Однако для всех других типов файлов, которые я пробовал (exe, pdf, doc), расширение файла не будет предлагаться, что делает его непригодным для использования большинством пользователей.
Я вижу только один вариант, чтобы обойти это: мне нужно добавить расширение в URL.
localhost/Download/Page.aspx/filename.ext
Но это приводит к ошибке 404 или аналогичной причине, поскольку веб-сервер теперь будет искать файл в подкаталоге Page.aspx, который не существует.
Существует ли какая-либо директива конфигурации, которая позволила бы мне изменить это поведение для определенного подкаталога?
Проект представляет собой стандартный веб-сайт ASP.NET 3.5. Я бы предпочел решение, которое не требует сложной настройки в диспетчере IIS. Лучшим решением для меня была бы директива в самом файле ASPX, хотя вряд ли она существует, потому что это проблема маршрутизации на уровне приложения. Но было бы неплохо установить Web.Config в теге location.