asp.net - 在 asp.net mvc 应用程序中处理未处理异常的一些策略是什么?

标签 asp.net asp.net-mvc exception-handling

我想知道您处理 ASP.NET MVC 中未处理异常的一些策略/实践。

简而言之,我想在发生任何错误时避免蓝屏,并向访问者显示错误一致的错误消息。

我的意思是,您是为此编写一个 Controller 来显示适当的错误页面,还是采用其他方式,例如编写 httpmodule 并在全局级别捕获错误。

任何在这个方向上的投入表示赞赏。

最佳答案

使用 HandleError 属性是要走的路。这是我用来处理来自 JQuery、ExtJs 和其他人的 Ajax 调用的一个小示例。

在您的 Controller 上

public class DataController : Controller
{    
    [HandleError(ExceptionType = typeof(ArgumentException), View = "ErrorAjax")]
    public void Foo(string x, string y)
    {    
        if (String.IsNullorEmpty(x))
            throw new ArgumentException("String cannot be empty!");

            // Call your layers or whatever here
            AnotherCall();
    }
}

然后在您的 View 中 (ErrorAjax)。注意它是强类型的 (HandleErrorInfo)
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<HandleErrorInfo>" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Sorry Dude!</title>
</head>
<body>
    <div>
        <!-- be creative here-->
        Sorry, an error occurred while processing your request.
        Action = <%= ViewData.Model.ActionName %>
        Controller = <%= ViewData.Model.ControllerName %>
        Message = <%= ViewData.Model.Exception.Message %>

    </div>
</body>
</html>

几个问题
  • 检查您的 web.config 并确保 customErrors mode="On"
  • 首先,在 Shared 文件夹下创建 View
  • 关于asp.net - 在 asp.net mvc 应用程序中处理未处理异常的一些策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/500283/

    相关文章:

    c# - 为什么 ASP.NET MVC Controller FileStreamResult 在关闭的流上出错?

    c++ - C++ catch(std::exception&e)与catch(…)

    android - 异步任务错误处理

    c# - 按 C# 中的日期属性或使用 jQuery 拆分列表

    ASP.NET 4.7 - 内容内的子文件夹未部署到云

    c# - w[警告]未找到测试结果文件 azure devops

    python-2.7 - 检查 Python 2.7 中是否正确引发异常?

    c# - 查找并行异步任务的结果

    asp.net - 自定义 asp.net webforms 标记

    c# - 无法将 MySQL 日期/时间值转换为 VS2010 中的 System.DateTime