gpt4 book ai didi

asp.net-mvc - MVC 4 全局异常过滤器如何实现?

转载 作者:行者123 更新时间:2023-12-02 02:01:31 25 4
gpt4 key购买 nike

如何在 MVC4 中实现全局异常处理程序,因为它似乎与 MVC3 不同。

不确定如何实现以下内容:

public class ErrorHandlerAttribute: System.Web.Mvc.FilterAttribute, 
IExceptionFilter
{
public Task ExecuteExceptionFilterAsync(
HttpActionExecutedContext actionExecutedContext,
CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
}

最佳答案

不幸的是,Eric Leschinski 的评论中提供的链接仅显示了如何实现 System.Web.Mvc.IExceptionFilter接口(interface),而不是 System.Web.Http.Filters.IExceptionFilter界面。第一个用于常规 MVC Controller ,而第二个目标为 ApiCotrollers .

这是我想出的一个简单的类示例,用于记录 ApiController 中引发的未处理异常:

public class ExceptionLoggerFilter: IExceptionFilter
{
public ExceptionLoggerFilter(Logger logger)
{
this.logger = logger;
}

public bool AllowMultiple { get { return true; } }

public Task ExecuteExceptionFilterAsync(
HttpActionExecutedContext actionExecutedContext,
CancellationToken cancellationToken)
{
return Task.Factory.StartNew(() =>
{
logger.Error("web service error", actionExecutedContext.Exception);
}, cancellationToken);
}

private Logger logger;
}

要启用此过滤器,您所需要做的就是在您的 Global.asax Application_Start 方法中注册它:

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();

// allocate filter and add it to global configuration
var exceptionLogger = new ExceptionLoggerFilter(Container.Get<Logger>());
GlobalConfiguration.Configuration.Filters.Add(exceptionLogger);

WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}

我希望这对其他 Google 用户有帮助!

关于asp.net-mvc - MVC 4 全局异常过滤器如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13831933/

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