我想知道您处理 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>
几个问题
关于asp.net - 在 asp.net mvc 应用程序中处理未处理异常的一些策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/500283/