Статические запросы к файлам не вызывают событие application_error

#asp.net #asp.net-mvc #error-handling #application-error

#asp.net #asp.net-mvc #обработка ошибок #ошибка приложения

Вопрос:

в моем Asp.Net Проект MVC Я обрабатываю исключения Http FileNotFound (для отсутствующего изображения), а затем перенаправляю запрос на изображение по умолчанию, как показано ниже

   protected void Application_Error(object sender, EventArgs e)
    {
        if (Request.Path.StartsWith("/images/profile"))
        {

            Response.Redirect("/images/profile/default.jpg", true);
            return;
        }
    }
  

Это работает в среде разработки, когда я отлаживаю свой веб-сайт. Но когда я развертываю его на рабочем сервере, на котором работает IIS 7.5, этот код не работает, запрос к файлу изображения не запускает событие Application_Error. Есть ли какая-либо конфигурация в IIS? Я не могу найти проблему.

Ответ №1:

Вам необходимо настроить IIS для выполнения всех запросов через ASP.Net.

Добавить <modules runAllManagedModulesForAllRequests="true" /> в <system.webServer> в Web.config.


Кроме того, вы должны добавить маршрут для этого вместо обработки Error события.

Комментарии:

1. 1 Этот вопрос и ваш ответ заставили меня осознать, что я делал глупое предположение об ошибках 404, которые каким-то образом отличаются от других в том, как IIS их обрабатывал.

2. спасибо за ваш ответ, у меня есть <modules runAllManagedModulesForAllRequests=»true» /> на моем system.webServer . Должна быть другая конфигурация. что вы имеете в виду, добавив маршрут для этого.

3. Отличный ответ, поэтому мы собираемся отправлять все наши статические запросы к файлам полностью через asp.net конвейер для каждого запроса, чтобы мы могли обрабатывать 404 запроса в Application_Error . Давайте предположим, что мы логичные люди, тогда что нам делать?