Обработка ошибок подключения к состоянию сеанса ASP.NET MVC 2.0 - PullRequest
0 голосов
/ 13 декабря 2010

У меня есть сайт MVC 2.0, который использует SQL Server в качестве диспетчера состояния сеанса.Я пытаюсь учесть сетевую ошибку, из-за которой мой сайт теряет подключение к самому серверу SQL.

В целях базового тестирования я использую Application_Error (отправитель объекта, EventArgs e) в файле Global.asax для входаошибка, а затем я пересылаю пользователя на страницу общей ошибки.Проблема возникает при переадресации на страницу с общей ошибкой, диспетчер состояний сеанса пытается подключиться снова и выдает исключение, если не может вызвать повторный вызов функции Application_Error ().Это приводит к бесконечному циклу.

Есть ли способ отключить любые попытки подключения к SQL-серверу состояния сеанса для данного действия в контроллере?

1 Ответ

0 голосов
/ 03 ноября 2011

Для тех, кто смотрит в будущее, я решил эту проблему, используя этот код в файле 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);
    }
}
...