ASP.NET/IIS: 404 для всех типов файлов

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


person st78    schedule 25.09.2008    source источник


Ответы (7)


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

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

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

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

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

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

person John Rudy    schedule 25.09.2008
comment
Спасибо за полный ответ. Проверим работоспособность и решим, что выбрать. - person st78; 25.09.2008

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

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

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

person Murph    schedule 25.09.2008

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

person Joel Coehoorn    schedule 25.09.2008

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

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

person mattlant    schedule 25.09.2008
comment
Это сработает, но есть соображения производительности для сайтов с высоким трафиком. - person Joel Coehoorn; 25.09.2008

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

person Mark Cidade    schedule 25.09.2008

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

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

person Community    schedule 25.09.2008

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

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

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

person alpere    schedule 14.08.2013