gpt4 book ai didi

c# - ASP.NET MVC SqlException不会重定向到错误页面

转载 作者:行者123 更新时间:2023-12-03 08:23:22 25 4
gpt4 key购买 nike

我希望如果发生错误(例如,我输入了错误的网站页面地址),则用户将被重定向到相关的错误页面(在本例中为404)。但是对于错误类型500(内部服务器错误),我在VS Log中看到了重定向,但是用户停留在同一页面上,这导致了错误。
这是我的网页的工作方式:

  • 当用户打开网页时,将执行 Controller 的ActionResult方法并返回View();
  • View呈现html代码,然后启动jQuery ajax,后者使用JsonResult执行另一个 Controller 方法
  • 在此 Controller 方法中,使用SqlClient的静态类方法准备并执行SQL查询。
  • 在静态类方法中,我得到了SqlException(例如,我尝试执行不存在的过程):

    An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code

    Additional information: Cannot find stored produre "dbo.NonExistingProcedureName".



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

    Event Type Event Time Duration Thread Detail Description

    ASP.NET (Activated)
    Redirect to "/error/serverError?aspxerrorpath=/dash/jObject" 11.16s [24128]
    Worker Thread
    ...

    ASP.NET GET "/error/serverError" 11.16s [24128]Worker Thread


    ...但是重定向实际上并未完成,并且用户仍然查看导致错误的页面。
    那么,为什么重定向到错误页面不能按预期工作?

    最佳答案

    如果我正确阅读了此内容,则ajax请求中发生了500错误。如果是这种情况,那么将返回错误页面,但不会呈现错误页面。如果您在浏览器中的开发工具中查看失败的ajax请求的响应,则会看到错误页面。 Ajax的全部优点是您不必发回整个表单,而只允许呈现要更新的部分。因此,如果您想重定向到另一个页面,则需要在JavaScript中进行处理。

    最好在ajax errorstatusCode回调中捕获错误,然后通过javascript重定向到相关的错误页面。就像是...

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

    关于c# - ASP.NET MVC SqlException不会重定向到错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51185391/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com