Я знаю, что ASP.NET MVC имеет атрибут фильтра ошибок для обработки указанного типа ошибки. Однако эта функция не может перехватить любую ошибку, возникающую при запуске приложения. Поэтому мне нужно добавить некоторый код в метод Application_Error для обработки этой ошибки, как показано в следующем коде.
public void Application_Error(object sender, EventArgs e)
{
// At this point we have information about the error
var ctx = HttpContext.Current;
var exception = ctx.Server.GetLastError();
var errorInfo =
"<br>Offending URL: " + ctx.Request.Url +
"<br>Source: " + exception.Source +
"<br>Message: " + exception.Message +
"<br>Stack trace: " + exception.StackTrace;
ctx.Response.Write(errorInfo);
Server.ClearError();
}
Хотя этот код будет работать нормально, когда обычная ошибка приложения возникает как ошибка, возникающая на странице просмотра. Тем не менее, он не работает, когда возникает ошибка при запуске приложения, потому что объекты запроса и ответа всегда равны нулю.
Далее я пытаюсь решить этот вопрос, установив перенаправление по умолчанию в пользовательских ошибках, подобных следующему коду.
<customErrors mode="On" defaultRedirect="Scripts/ApplicationError.htm"></customErrors>
К сожалению, это не работает, потому что, когда приложение получает перенаправленный запрос, оно пытается запустить приложение снова и выдает исключение снова.
Как решить эту проблему? В качестве альтернативы, у вас есть другая идея для обработки этой ошибки.
Спасибо,
PS. Основная причина создания этого обработчика, потому что я хочу отображать ошибку, когда приложение не может подключиться к другой службе, такой как база данных, для кэширования данных при запуске приложения.