asp.net-mvc-2 - ASP.NET MVC 2.0 session 状态连接错误处理

标签 asp.net-mvc-2 error-handling session-state-server

我有一个使用SQL Server作为 session 状态管理器的MVC 2.0站点。我正在尝试解决网络错误,该错误导致我的站点失去与SQL Server本身的连接。

为了进行非常基本的测试,我在Global.asax文件中使用Application_Error(object sender,EventArgs e)记录错误,然后将用户转发到常规错误页面。当转发到常规错误页面时, session 状态管理器尝试再次连接并在无法导致再次调用Application_Error()函数时引发异常时出现问题。这导致无限循环。

有没有一种方法可以针对 Controller 中的给定操作禁用任何尝试连接到 session 状态SQL Server的尝试?

最佳答案

对于希望将来使用的人,我通过在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);
    }
}

关于asp.net-mvc-2 - ASP.NET MVC 2.0 session 状态连接错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4431707/

相关文章:

php - 检查外部 PHP 文件中的 fatal error ?

c# - 如何在 ASP.NET MVC2 中向 Controller 添加自定义 Hook

asp.net-mvc - 使用将 Ajax 返回到 Ajax.BeginForm 的 onBegin 的函数

c++ - 如何错误处理命令行参数?

memcached - Google App Engine 灵活环境是否支持开箱即用的 session 存储?

asp.net-mvc - session 状态在 asp.net web 场中丢失

ASP.NET session 状态服务器与InProc session

c# - 通用类型的 ASP.NET MVC 显示模板

asp.net-mvc - 如何创建强类型 BeginForm?

ios - 在新的 Firebase 和 Swift 中处理错误