ASP.NET/IIS: 404 для всех типов файлов - PullRequest
5 голосов
/ 25 сентября 2008

Я установил страницу обработчика 404 в web.config, но он работает ТОЛЬКО, когда расширение URL-адреса равно .aspx (или другой, которая обрабатывается ASP.NET) Я знаю, что могу настроить статическую HTML-страницу в настройках веб-сайта, но я хочу иметь страницу. Существуют ли варианты назначения страницы обработчика ASPX для всех расширений запросов в IIS?

Ответы [ 7 ]

11 голосов
/ 25 сентября 2008

Прямой вопрос заключался в том, есть ли варианты назначения обработчика ASPX для всех расширений запроса: да, есть. Я скоро расскажу, как это сделать.

Во-первых, я думаю, что «скрытый» вопрос - ответ, который вам действительно нужен, - это есть ли способ перенаправить все ошибки 404 для страниц, отличных от ASPX, ASMX и т. Д. Да, есть, и это лучше , если это решит проблему, с которой вы столкнулись.

Чтобы перенаправить все 404 в IIS 6, щелкните правой кнопкой мыши корень веб-приложения (будь то собственный сайт или виртуальный каталог на основном сайте) и выберите «Свойства». Оттуда выберите вкладку «Пользовательские ошибки». Найдите 404 в списке и измените его на нужный вам.

Теперь, если этого не достаточно - и я действительно надеюсь, что это так - да, вы можете запустить каждую страницу через обработчик ASPX. Однако это приводит к довольно высокой стоимости с точки зрения эффективности - обработка необработанного HTML / изображения значительно быстрее, чем что-либо динамическое.

Для этого щелкните правой кнопкой мыши корневой каталог вашего веб-приложения и выберите «Свойства». Выберите вкладку «Домашний каталог». Нажмите «Конфигурация»; появится новое окно. Скопируйте путь из одной из страниц ASP.NET, а затем используйте его для карты приложения с подстановочными знаками.

Имейте в виду, опять же, это неправильный ответ большую часть времени. Это отрицательно скажется на вашей производительности и эквивалентно использованию бензопилы для вырезания индейки. Я настоятельно рекомендую первый вариант над этим, если он сработает для вас.

2 голосов
/ 25 сентября 2008

Для информации:

Это одна из нескольких приятных вещей, которые приносит IIS7 - все страницы маршрутизируются через обработчик, так что вы можете делать пользовательские 404 и, что полезно, безопасность каталогов и файлов для любого файла (на тот же материал web.config, что и для файлов asp.net до IIS7).

Так что условно «использовать II7» - это ответ (будет «ответом» вовремя), но, конечно, он не очень практичный, если вы не принимаете хостинг / не размещаетесь на W2k8 (или выше). *

1 голос
/ 25 сентября 2008

В конфигурации приложения IIS можно установить сопоставление с подстановочными знаками (". *") Для C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll

1 голос
/ 25 сентября 2008

Единственное, о чем я могу думать, это передать ВСЕ расширения на asp.net.

Таким образом, все типы файлов обрабатываются asp.net, и ваша пользовательская страница ошибок будет работать.

1 голос
/ 25 сентября 2008

web.config может настраивать страницы ошибок только для страниц, контролируемых его веб-сайтом. Если у вас есть другие страницы, не относящиеся к области применения приложения ASP.Net, вы настраиваете их обработку в IIS. Там есть опция для настройки страницы 404, где вы можете указать ее на своей пользовательской странице.

0 голосов
/ 14 августа 2013

В IIS вы можете установить пользовательскую ошибку для 404 ошибок и направить ее на URL в свойствах сайта.

По умолчанию показывает статический HTML C: \ WINDOWS \ помощь \ iisHelp \ Common \ 404b.htm

Вы можете изменить его на относительный URL на вашем сайте.

0 голосов
/ 25 сентября 2008
  1. Вы можете настроить сопоставление подстановочных знаков в IIS (Конфигурация приложения / Сопоставления / Подстановочные сопоставления / - просто установите aspnet_isapi.dll в качестве исполняемого файла и снимите флажок Проверять, что файл существует), который будет направлять все входящие запросы в ваше приложение так что вы можете контролировать поведение прямо из него.

  2. Вам не нужно настраивать статическую страницу в настройках приложения IIS. Имхо, вы должны иметь возможность настроить действительный URL (например, /error_handler.aspx) из своего приложения, который будет использоваться в качестве целевой страницы в случае конкретной ошибки сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...