gpt4 book ai didi

c# - HandleErrorAttribute 的派生类是不是捕获异常?

转载 作者:行者123 更新时间:2023-11-30 12:25:25 29 4
gpt4 key购买 nike

我有一个 ASP.NET MVC 网络应用程序,我正在尝试改进它的错误处理能力。我阅读了 HandleErrorAttribute 基类,并想将其用于我的 Controller 类。但是,当我从一个用该属性装饰的 Controller 类中的方法抛出测试异常时,派生类中的 OnException 重写不会被触发。我没有触发派生错误处理类的 OnException 方法,而是看到了 XML 格式的一般错误消息,并且一般错误消息在我的应用程序中的任何地方都找不到:

<Error>
<Message>An error has occurred.</Message>
</Error>

我做错了什么?

请注意,我尝试将以下自定义错误元素添加到我的 web.config 文件中的 system.web 元素,如这篇 SO 帖子所示,但是 它没有帮助:

ASP.net MVC [HandleError] not catching exceptions

<customErrors mode="On" defaultRedirect="Error" />

这是我的 HandleErrorAttribute 派生类:

public class HandleControllerErrors : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
// Breakpoint set here never hit.

Exception ex = filterContext.Exception;
filterContext.ExceptionHandled = true;
var model = new HandleErrorInfo(filterContext.Exception, "Controller", "Action");

filterContext.Result = new ViewResult()
{
// Use the ErrorInController view.
ViewName = "ErrorInController",
ViewData = new ViewDataDictionary(model)
};
}
}

下面是我如何装饰我的 Controller 类。我有一个方法在 try/catch block 中强行抛出 not 的异常。:

[HandleControllerErrors]
public class ValuesController : ApiController
{
[Route("Api/TestException/")]
public IHttpActionResult TestException()
{
throw new InvalidCastException("Fake invalid cast exception.");
}
}

最佳答案

ApiController 与 MVC Controller 不同,因此这可能行不通。 Web API 中的错误处理方式略有不同。检查以下链接以了解 Web API 的异常处理属性:

http://www.asp.net/web-api/overview/error-handling/exception-handling

关于c# - HandleErrorAttribute 的派生类是不是捕获异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31460869/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com