如何做到依赖注入行为过滤上的ASP.NET Web API(How to do dependency

2019-07-29 19:01发布

我真的卡住的进场做依赖注入到网络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,但它并没有为我工作了,没有任何人有这个解决方案或运行的代码? 这将非常感激

Answer 1:

你需要检查你的具体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容器。



Answer 2:

对于的WebAPI和AutoFac你可以使用:

builder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration);

该文档是在这里 。



Answer 3:

您可以使用Ninject.Web.WebApi组件(显然是在利用Ninject国际奥委会),以使这项工作。 我建议在寻找通过源和SampleApplication https://github.com/ninject/Ninject.Web.WebApi ,看看他们是如何实现过滤器注入。



文章来源: How to do dependency injection to Action Filter on ASP.NET Web API