ASP.NET MVC 2.0会话状态连接错误处理

时间:2010-12-13 17:39:00

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

我有一个MVC 2.0站点,它使用SQL Server作为会话状态管理器。我正在尝试解决网站错误,其中我的网站失去了与SQL服务器本身的连接。

对于非常基本的测试目的,我在Global.asax文件中使用Application_Error(对象发送者,EventArgs e)来记录错误,然后将用户转发到一般错误页面。转发到常规错误页面时会出现问题,会话状态管理器再次尝试连接并在无法再次调用Application_Error()函数时抛出异常。这导致无限循环。

对于控制器中的给定操作,是否有办法禁用任何连接到会话状态SQL Server的尝试?

1 个答案:

答案 0 :(得分:0)

对于未来的任何人,我通过在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);
    }
}