#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
. Давайте предположим, что мы логичные люди, тогда что нам делать?