Обработка ошибок соединения состояния сеанса ASP.NET MVC 2.0
У меня есть сайт MVC 2.0, который использует SQL Server в качестве диспетчера состояния сеанса. Я пытаюсь учесть сетевую ошибку, из-за которой мой сайт теряет связь с самим сервером SQL.
Для базовых целей тестирования я использую Application_Error(отправитель объекта, EventArgs e) в файле Global.asax для регистрации ошибки, а затем пересылаю пользователя на страницу с общей ошибкой. Проблема возникает при переадресации на страницу с общей ошибкой, диспетчер состояний сеанса пытается подключиться снова и выдает исключение, когда не может вызвать повторный вызов функции Application_Error(). Это приводит к бесконечному циклу.
Есть ли способ отключить любые попытки подключения к SQL-серверу состояния сеанса для данного действия в контроллере?
1 ответ
Для тех, кто смотрит в будущее, я решил эту проблему, используя этот код в файле global.asax:
protected void Application_Error(object sender, EventArgs e) {
// Get Exception
var ex = Server.GetLastError();
// Looking for SqlTimeout, which is inner exception to HttpExecption
// when it occurs.
if (!typeof(HttpException).IsInstanceOfType(ex))
return;
// Clear response.
HttpContext.Current.Response.Clear();
// Check inner
if (ex.InnerException != null && typeof(SqlException).IsInstanceOfType(ex.InnerException)) {
// Clear error
Server.ClearError();
// Redirect to basic html error.
Server.Transfer("/site_down.html", false);
}
else {
// Send to general error page.
Response.Redirect("~/error/", true);
}
}