4

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

ответ

11

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

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

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

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

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

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

1

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

1

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

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

+1

Это сработает, но есть соображения производительности для сайтов с высоким трафиком. – 2008-09-25 13:16:32

+0

действительно, было бы. – mattlant 2008-09-25 13:17:11

1

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

2

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

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

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

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

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

0

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

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

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