我想了解一些处理ASP.NET MVC中未处理异常的策略/实践.
总之,我想在发生任何错误时避开黄色屏幕,并向访问者显示错误一致的错误消息.
我的意思是你为此编写了一个控制器,它显示了相应的错误页面,或者你采取其他方式编写一个httpmodule并在全局级别捕获错误.
这方面的任何投入都表示赞赏.
使用HandleError属性是要走的路.这是一个小样本,我用它来处理来自JQuery,ExtJs等的Ajax调用.
在你的控制器上
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(); } }
然后在你的视图(ErrorAjax).注意它是强类型的(HandleErrorInfo)
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> Sorry Dude! Sorry, an error occurred while processing your request. Action = <%= ViewData.Model.ActionName %> Controller = <%= ViewData.Model.ControllerName %> Message = <%= ViewData.Model.Exception.Message %>
几个陷阱
检查你的web.config并确保customErrors mode ="On"
对于初学者,在共享文件夹下创建视图