Я установил страницу обработчика 404 в web.config, но она работает ТОЛЬКО при расширении URL-адреса .aspx (или другом, который обрабатывается ASP.NET). Я знаю, что могу настроить статическую HTML-страницу в параметрах веб-сайта, но я хочу иметь страницу. Есть ли какие-либо варианты назначения страницы обработчика ASPX для всех расширений запросов в IIS?
ASP.NET/IIS: 404 для всех типов файлов
Ответы (7)
Прямой вопрос заключался в том, есть ли варианты для назначения обработчика ASPX всем расширениям запросов: да, есть. Я скоро расскажу, как это сделать.
Во-первых, я думаю, что «скрытый» вопрос - ответ, который вам действительно нужен - заключается в том, есть ли способ перенаправить все ошибки 404 для страниц, отличных от ASPX, ASMX и т. Д. Да, есть, и это < strong> лучший вариант, если он решит вашу проблему.
Чтобы перенаправить все запросы 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. Imho, вы должны иметь возможность настроить действительный URL-адрес (например, /error_handler.aspx) из своего приложения, который будет использоваться в качестве целевой страницы в случае конкретной ошибки сервера.
В IIS вы можете установить настраиваемую ошибку для ошибок 404 и направить ее на URL-адрес в свойствах сайта.
По умолчанию он показывает статический HTML C: \ WINDOWS \ help \ iisHelp \ common \ 404b.htm
Вы можете изменить его на относительный URL-адрес на своем сайте.