【发布时间】:2012-06-29 19:54:34
【问题描述】:
我有一个在类级别具有 HandleError 属性的 C# MVC 3 控制器
[HandleError(View = "MyErrorPage")]
public class MyController : Controller
{
在我所掌握的方法级别:
[HttpPost]
[MyExceptionHandler]
public ActionResult DoSomeStuff(FormCollection fc)
{
MyExceptionHandler 的样子:
public class MyExceptionHandlerAttribute : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
//do Stuff
JsonResult result = new JsonResult {
Data = new {
error = "Your request blah blah...."
}
};
filterContext.Result = result;
filterContext.ExceptionHandled = true;
}
}
这在我的本地主机上运行良好。 IE。在调用方法“DoSomeStuff”[MyExceptionHandler] 中的异常时,不会调用类级别 [HandleError]。 然而,在开发环境中,类级别 [HandleError] 开始发挥作用。结果是渲染了 HandleError view=MyErrorPage。
- 我知道 [HandleError] 在 localhost 上是多余的,但可以更正(或配置选项)?
- 我不确定是否在开发环境(不是本地主机)上调用了 MyExceptionHandler。可能在类级别[HandleError]之前调用?
我的问题是我需要 [MyExceptionHandler] 作为唯一调用的处理程序。 我希望能够在我的本地主机上调用 [HandleError],以便我可以在本地模拟问题。
【问题讨论】:
-
您未显示的
//do Stuff内容会引发异常吗?如果可以的话,它将解释这种行为。此外,在调用DoSomeStuff操作(GET 或 POST)时,您在 AJAX 请求中使用了哪个 HTTP 动词?如果您使用 GET,这也可以解释您的问题。 -
感谢达林的回复。不,我不认为 //do 的东西会引发异常。 POST 是使用的 HTTP 动词。我已经更新了问题中的代码以显示这一点。表单指定method="POST"。谢谢。
-
您不认为或您已验证并确定?
-
好点,我有 99.9% 的把握肯定不会出现异常,但由于 IT 问题目前无法验证。当我验证时,我会在这里发表评论。谢谢
标签: c# asp.net-mvc asp.net-mvc-3 error-handling