asp.net-web-api – 将属性注入Web API的`System.Web.Http.Filte
发布时间:2020-12-16 09:51:05 所属栏目:asp.Net 来源:网络整理
导读:在ASP.NET Web api项目中,将属性注入执行过滤器属性的推荐位置在哪里?在MVC 3版本中,我们可以在从IoC容器中解析控制器时为ControllerActionInvoker设置我们自己的实现,并覆盖其GetFilters()方法以注入从容器中解析的组件. 在ASP.NET Web API项目中是否有类
在ASP.NET Web api项目中,将属性注入执行过滤器属性的推荐位置在哪里?在MVC 3版本中,我们可以在从IoC容器中解析控制器时为ControllerActionInvoker设置我们自己的实现,并覆盖其GetFilters()方法以注入从容器中解析的组件.
在ASP.NET Web API项目中是否有类似的地方可以做到这一点?我有一个控制器工厂,从容器中解析控制器,CreateController方法如下: public IHttpController CreateController(HttpControllerContext controllerContext,string controllerName) { var controller = _kernel.Resolve<IHttpController>(controllerName); controllerContext.Controller = controller; controllerContext.ControllerDescriptor = new HttpControllerDescriptor(_configuration,controllerName,controller.GetType()); return controllerContext.Controller; } 我已经看过HttpControllerDescriptor,看看是否有某处可以进行注射,但我看不到合适的位置.任何正确方向的指针? 解决方法
您需要实现IHttpControllerSelector并在HttpConfiguration的(Services属性)DefaultServices中注册您的选择器.
或者,要使用您自己的解析器/ DI框架,您需要更换解析器.有关示例,请参见here. 您需要实现自己的IFilterProvider.看一下ActionDescriptorFilterProvider的源代码.这是您可以注入属性的地方. 这是ActionDescriptorFilterProvider实现: public IEnumerable<FilterInfo> GetFilters(HttpConfiguration configuration,HttpActionDescriptor actionDescriptor) { if (configuration == null) { throw Error.ArgumentNull("configuration"); } if (actionDescriptor == null) { throw Error.ArgumentNull("actionDescriptor"); } IEnumerable<FilterInfo> controllerFilters = actionDescriptor.ControllerDescriptor.GetFilters().Select(instance => new FilterInfo(instance,FilterScope.Controller)); IEnumerable<FilterInfo> actionFilters = actionDescriptor.GetFilters().Select(instance => new FilterInfo(instance,FilterScope.Action)); return controllerFilters.Concat(actionFilters); } 您所要做的就是使用实例lambda参数和注入属性. 注册正如您所知,过滤器提供程序需要针对HttpConfiguration进行注册.或者,请参见here. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 关闭不显眼的验证运行时?
- Asp.net .net(C#) 获取当前命名空间,类名,方法名的方法
- asp.net – Glass Mapper打破了图像字段的标准值
- asp.net – HttpContext.Current.User为空,即使Windows身份
- asp.net-mvc-3 – 如何在本地测试时禁用elmah发送电子邮件?
- asp.net-mvc-3 – 带抽象类的mvc3 razor editortemplate
- asp.net-mvc – ASP.NET MVC 3用户验证
- asp.net – 如何在IIS7上全局设置enableVersionHeader为fal
- asp.net-mvc – Context.User.Identity.Name为null与Signal
- ASP.NET Identity简介及简单使用
推荐文章
站长推荐
- ASP如何将table导出EXCEL表格
- asp.net-mvc – 在ASP.NET MVC中指定只读会话
- 你需要知道的这几种 asp.net core 修改默认端口的
- 当通过ASP.NET成员资格检查用户角色时,Semaphore
- asp.net-core – 从显式类型的ASP.NET Core API控
- 高流量ASP.NET MVC编码注意事项
- 在更新到ASP.NET 4后,IE中的会话“立即过期”?
- asp.net-mvc – ViewBag vs Model,在MVC.NET中
- asp.net – 如何Html.Encode在Webforms
- asp.net-mvc – 如何优雅地重新附加Entity Frame
热点阅读