asp.net-mvc – 自定义Web-Api FilterAttribute的Autofac注入
发布时间:2020-12-16 06:38:35 所属栏目:asp.Net 来源:网络整理
导读:我有一个自定义ExceptionFilter,它记录Web-Api控制器中所有未捕获的异常.我想使用Autofac,为它注入ILog配置. 我的问题是怎么做? Autofac网站几乎没有解释如何这样做. CustomFilter: public class ApiControllerErrorFilterAttribute : ExceptionFilterAttr
我有一个自定义ExceptionFilter,它记录Web-Api控制器中所有未捕获的异常.我想使用Autofac,为它注入ILog配置.
我的问题是怎么做? Autofac网站几乎没有解释如何这样做. CustomFilter: public class ApiControllerErrorFilterAttribute : ExceptionFilterAttribute { private static readonly ILog log = LogManager.GetLogger("ApiLog"); public override void OnException(HttpActionExecutedContext actionExecutedContext) { log.Error("Error: ",actionExecutedContext.Exception); } } 附: 过滤正常控制器: public class ControllerErrorFilterAttribute : HandleErrorAttribute { public ICustomLogSettings Log { get; set; } public override void OnException(ExceptionContext filterContext) { Log.GetLogger.Error("Error: ",filterContext.Exception); } } 日志配置: builder.Register(c => new BaseLog()).As<ICustomLogSettings>().InstancePerRequest(); builder.RegisterFilterProvider(); 解决方法
these examples中的一些可能有所帮助,尤其是:
builder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration); builder.Register(c => new MyWebApiFilter()) .AsWebApiActionFilterFor<ValuesController>() .InstancePerApiRequest(); 从那以后,它告诉我你可以注册一个像其他任何服务一样得到解决的过滤器,这意味着你应该能够做到: public class ApiControllerErrorFilterAttribute : ExceptionFilterAttribute { private readonly ILog _log public ApiControllerErrorFilterAttribute(ILog log) { _log = log; } public override void OnException(HttpActionExecutedContext actionExecutedContext) { _log.Error("Error: ",actionExecutedContext.Exception); } } 然后能够像这样注册它: builder.RegisterType<ApiControllerErrorFilterAttribute>() .AsWebApiActionFilterFor<ValuesController>() .InstancePerApiRequest(); 当然,您需要设置注册以解决ILog,这与this part of the wiki非常相似. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 一步步开发自己的博客 番外篇(7、异步记录日志 和 文章阅读
- 实体框架 – ASP.NET Identity Model First因重命名的AspNe
- X-Admin&ABP框架开发-设置管理
- asp.net-mvc – 是否有针对ASP.NET MVC Production Apps的建
- asp.net – 如何阻止MonoDevelop在调试时打开Safari窗口?
- ASP.NET 5 MVC 6中的本地化
- asp.net-mvc-3 – 使用bootstrap,Asp.net Mvc 3和骨干进行F
- asp.net-mvc – 动作过滤器异常
- asp.net-mvc – 将mvc3中的下拉列表绑定到字典?
- asp.net-mvc-5 – 在MVC5中启用和使用角色管理
推荐文章
站长推荐
- ASP.Net WebAPI中的自定义路由处理程序
- asp.net-mvc – 使用ASP.NET MVC设置路由{tenant
- ASP.NET如何在web.config中添加程序集?
- asp.net – 使用FindControl:在窗体视图中访问控
- asp.net – 如何通过在MasterPage上单击按钮来处
- asp.net-mvc – 我应该在MVC应用程序中创建我的E
- asp.net – Web API服务 – 如何在异步任务中使用
- asp.net-mvc-3 – MVC 3传递实体作为接口
- asp.net-mvc – 在ASP.Net MVC中定义自定义URL路
- ASP.NET:WebResource.axd调用404错误:如何知道
热点阅读