C# ASP.NET MVC SqlException不会重定向到错误页

C# ASP.NET MVC SqlException不会重定向到错误页,c#,redirect,error-handling,asp.net-mvc-5,sqlexception,C#,Redirect,Error Handling,Asp.net Mvc 5,Sqlexception,我希望,如果发生错误(例如,我键入了站点页面的错误地址),用户将被重定向到相关的错误页面(在本例中为-404)。但对于错误类型500(内部服务器错误),我在VS日志中看到重定向,但用户停留在同一页面上,这导致了错误 以下是我的网页的工作原理: 当用户打开网页时,控制器的ActionResult方法被执行并返回View() 视图呈现html代码,然后启动jQueryAjax,它使用JsonResult 在此控制器方法中,通过使用SqlClient 在静态类方法中,我得到一个SqlExcept

我希望,如果发生错误(例如,我键入了站点页面的错误地址),用户将被重定向到相关的错误页面(在本例中为-404)。但对于错误类型500(内部服务器错误),我在VS日志中看到重定向,但用户停留在同一页面上,这导致了错误

以下是我的网页的工作原理:

  • 当用户打开网页时,控制器的
    ActionResult
    方法被执行并返回
    View()

  • 视图呈现html代码,然后启动jQueryAjax,它使用
    JsonResult

  • 在此控制器方法中,通过使用
    SqlClient

  • 在静态类方法中,我得到一个
    SqlException
    (例如,我尝试执行不存在的过程):

    System.Data.dll中发生“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理

    其他信息:找不到存储的产品“dbo.NonExistingProcedureName”

  • 我希望在这种情况下,用户将被重定向到500错误页面,我在VS日志中看到重定向:

    事件类型事件持续时间线程详细说明

    ASP.NET(已激活)
    重定向到“/error/serverError?aspxerrorpath=/dash/jObject”11.16s[24128]
    工作线程

    ASP.NET GET“/error/serverError”11.16s[24128] 工作线程

    。。。但重定向实际上并没有完成,用户仍然会查看导致错误的页面


    那么,为什么重定向到错误页面没有按预期工作呢?

    如果我读对了,您的500错误就发生在ajax请求中。如果是这种情况,则返回错误页,但不呈现。如果您在浏览器中查看开发工具中失败的ajax请求的响应,您将看到错误页面。ajax的全部优点是,您不必将整个表单发回,只允许您渲染要更新的部分。因此,如果要重定向到另一个页面,则需要在javascript中处理此问题

    最好在ajax
    error
    statusCode
    回调中捕获错误,然后通过javascript重定向到相关错误页面。类似于

    $.ajax({
    statusCode: {
        500: function() {
          alert("fudged up");
        }
      }
    });
    

    谢谢确切解释