Я знаю, что 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. Основная причина для создания этого обработчика, потому что я хочу отображать ошибку, когда приложение не может подключиться к другой службе, например базе данных, для кэширования данных при запуске приложения.