АСП.NET/IIS:404 для всех типов файлов
-
02-07-2019 - |
Вопрос
Я настроил страницу обработчика 404 в web.config, но она работает ТОЛЬКО, если расширение URL-адреса — .aspx (или другое, которое обрабатывается ASP.NET).Я знаю, что могу настроить статическую HTML-страницу в настройках веб-сайта, но мне нужна страница.Есть ли какие-либо возможности назначить страницу обработчика ASPX для всех расширений запросов в IIS?
Решение
Прямой вопрос заключался в том, есть ли варианты назначить обработчик ASPX всем расширениям запроса:Да, есть.Я расскажу, как это сделать в ближайшее время.
Во-первых, я думаю, что «скрытый» вопрос (ответ, который вам действительно нужен) заключается в том, существует ли способ перенаправить все ошибки 404 на страницы, отличные от ASPX, ASMX и т. д.Да, есть, и это лучше выберите, решит ли это вашу проблему.
Чтобы перенаправить все 404 в IIS 6, щелкните правой кнопкой мыши корень веб -приложения (будь то собственный сайт или виртуальный каталог на основном сайте) и выберите «Свойства». Оттуда выберите вкладку «Пользовательские ошибки».Найдите в списке 404 и измените его на нужное вам перенаправление.
Теперь, если этого недостаточно (а я очень надеюсь на это), да, вы можете запускать каждую страницу через обработчик ASPX.Однако это обходится довольно дорого с точки зрения эффективности: обработка необработанного HTML/изображений происходит значительно быстрее, чем что-либо динамическое.
Для этого щелкните правой кнопкой мыши корень веб -приложения и выберите «Свойства». Выберите вкладку «Домашний каталог».Нажмите «Конфигурация»; Новое окно появится.Скопируйте путь с одной из страниц ASP.NET, а затем используйте его для карты приложения с подстановочными знаками.
Имейте в виду, опять же, это неверный ответ большую часть времени.Это отрицательно повлияет на вашу производительность и эквивалентно разделке индейки бензопилой.Я настоятельно рекомендую первый вариант, а не этот, если он вам подойдет.
Другие советы
Для информации:
Это одна из нескольких приятных особенностей IIS7 — все страницы маршрутизируются через обработчик, так что вы можете создавать собственные ошибки 404 и — что полезно — безопасность на уровне каталогов и файлов для любой файл (на основе того же материала web.config, что и для файлов asp.net до IIS7).
Таким образом, условно «использовать II7» — это ответ (со временем он станет «ответом») — но, конечно, это не очень практично, если вы не размещаете/размещаетесь на W2k8 (или выше).
Web.config может настраивать страницы ошибок только для страниц, контролируемых его веб-сайтом.Если у вас есть какие-либо другие страницы, находящиеся за пределами приложения ASP.Net, вы настраиваете их обработку в IIS.Там есть опция для настройки страницы 404, где вы можете указать ее на свою пользовательскую страницу.
Единственное, о чем я могу думать, это передать ВСЕ расширения в asp.net.
Таким образом, asp.net обрабатывает все типы файлов, и ваша пользовательская страница ошибок будет работать.
В конфигурации приложения IIS вы можете установить сопоставление подстановочных знаков (".*") со значением C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll.
Вы можете настроить сопоставление подстановочных знаков в IIS (Конфигурация приложения/Сопоставления/Сопоставления подстановочных знаков/ — просто установите aspnet_isapi.dll как исполняемый файл и снимите флажок «Проверить существование файла»), который будет маршрутизировать все входящие запросы в ваше приложение — чтобы вы могли контролировать поведение прямо из него.
Вам не нужно настраивать статическую страницу в настройках приложения IIS.Имхо, вы должны иметь возможность настроить действительный URL-адрес (например./error_handler.aspx) из вашего приложения, которое будет использоваться в качестве целевой страницы в случае конкретной ошибки сервера.
В IIS вы можете установить специальную ошибку для ошибок 404 и направить ее на URL-адрес в свойствах сайта.
Он показывает статический HTML по умолчанию C: Windows help iishelp common 404b.htm
Вы можете изменить его на относительный URL-адрес на своем сайте.