我真的卡住的进场做依赖注入到网络API的行为过滤器。 我有一个动作过滤器是这样的:
public class AuthorizationAttribute : ActionFilterAttribute
{
public IApiKeyRepository Repository { get; set; }
private Guid GetApiKey(string customerKey)
{
return Repository.GetApiKey(customerKey);
}
public override void OnActionExecuting(HttpActionContext actionContext)
{
}
}
我想用温莎做对物业库属性注入(但它并不重要IoC容器时)
我也拿出来定制FilterProvider,但它并没有为我工作了,没有任何人有这个解决方案或运行的代码? 这将非常感激
你需要检查你的具体IoC实现。 IOC容器如NInject和Autofac具有通过注入公共属性某种类型的过滤器的注射。 温莎我不确定,但这里是创建一个包装可能与温莎帮助链接: http://eagle081183.wordpress.com/2010/09/21/dependency-injection-with-asp-net-mvc-action -filters /和另一篇文章直接解决与温莎问题: http://weblogs.asp.net/psteele/archive/2009/11/04/using-windsor-to-inject-dependencies-into-asp-net-mvc -actionfilters.aspx 。
对于NInject和Autofac完整性:
Ninject:
- http://codeclimber.net.nz/archive/2009/02/10/how-to-use-ninject-to-inject-dependencies-into-asp.net-mvc.aspx
- Ninject在操作过滤器
Autofac:
- ASP.NET MVC 3,行动滤镜和Autofac依赖注入
**编辑 - 附加选项**
你应该能够做到GlobalConfiguration.Configuration.DependencyResolver.GetService(...)
从任何过滤器,无论您使用的是IOC容器。
对于的WebAPI和AutoFac你可以使用:
builder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration);
该文档是在这里 。
您可以使用Ninject.Web.WebApi组件(显然是在利用Ninject国际奥委会),以使这项工作。 我建议在寻找通过源和SampleApplication https://github.com/ninject/Ninject.Web.WebApi ,看看他们是如何实现过滤器注入。