Sha*_*ean 34 error-handling asp.net-mvc ninject asp.net-mvc-3
是否有内置或正确的方法来处理asp.net mvc 3中的错误?
这就是我想要做的:
我找到了以下方法:
我该如何正确处理?
如果解决方案类似或类似于上面列表中的#1,我使用ninject并且我还没有创建基类.我怎么做呢?
Jer*_*ose 15
我建议实现一个自定义的HandleErrorAttribute动作过滤器.
有关详细信息,请参阅此链接:http:
//msdn.microsoft.com/en-us/library/dd410203%28v=vs.90%29.aspx
设置HandleErrorAttribute操作过滤器使您可以完全控制过滤器处理哪些操作,并且可以通过在自定义基本控制器上设置它来轻松设置控制器级别,甚至是站点级别,并且拥有所有操作控制器继承自基础控制器.
我用它做的其他事情是,我有一个单独的HandleJsonErrorAttribute,它通过返回Json响应而不是自定义页面来响应Ajax调用.
更新:
根据下面的一些问题,这是HandleJsonErrorAttribute
我使用的一个示例:
public class HandleJsonErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
var serviceException = filterContext.Exception as ServiceException;
filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
filterContext.Result = new JsonResult { Data = new { message = serviceException == null ? "There was a problem with that request." : serviceException.Message } };
filterContext.ExceptionHandled = true;
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我用来处理这些无法处理的异常的jQuery:
$(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) {
showPopdown($.parseJSON(jqXHR.responseText).message);
});
Run Code Online (Sandbox Code Playgroud)
这允许我的Ajax方法非常轻量级 - 它们只处理返回正常的Json,并且在出现无法异常的情况下,带有错误状态代码的消息被包装在Json中并返回.
此外,在我的实现中,我有一个ServiceException
我从服务中抛出的自定义,它从服务层发送消息而不是通用消息.
Sun*_*nil 14
对于全局错误处理
所有您需要做的就是更改web.config页面中的customErrors mode ="On"
错误将通过Error.cshtml显示在共享文件夹中.
确保Error.cshtml Layout不为null.
[它应该是这样的:@ {Layout ="〜/ Views/Shared/_Layout.cshtml"; }
或者删除布局=零码块]
的样品标记为Error.cshtml: -
@{ Layout = "~/Views/Shared/_Layout.cshtml"; }
@model System.Web.Mvc.HandleErrorInfo
<!DOCTYPE html>
<html>
<head>
<title>Error</title>
</head>
<body>
<h2>
Sorry, an error occurred while processing your request.
</h2>
<p>Controller Name: @Model.ControllerName</p>
<p>Action Name : @Model.ActionName</p>
<p>Message: @Model.Exception.Message</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
对于特定错误处理
将HandleError属性添加到控制器类中的特定操作.为该特定错误提供"查看"和"异常类型".
示例NotImplemented Exception Handler:
public class MyController: Controller
{
[HandleError(View = "NotImplErrorView", ExceptionType=typeof(NotImplementedException))]
public ActionResult Index()
{
throw new NotImplementedException("This method is not implemented.");
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21862 次 |
最近记录: |