首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IHttpModule中的自动依赖注入

IHttpModule中的自动依赖注入
EN

Stack Overflow用户
提问于 2013-05-28 23:44:04
回答 1查看 3.7K关注 0票数 5

新的MVC 4 web应用程序在IIS 7.5上使用autofac3.0。如何向IHttpModule中注入依赖项?

我尝试了构造函数注入,结果是:

类型“AnonymousIdentityModule”上的构造函数未找到

因此,内部似乎需要一个http模块的无参数构造函数。我也尝试过属性注入,但这导致实际上没有依赖注入。

注册

代码语言:javascript
复制
builder.RegisterType<AnonymousIdentityModule>().As<IHttpModule>().PropertiesAutowired().InstancePerHttpRequest();

IHttpModule码

代码语言:javascript
复制
public class AnonymousIdentityModule : IHttpModule
{
    private readonly IServiceManager _serviceManager;

    // this causes "constructor not found" exception 
    public AnonymousIdentityModule(IServiceManager serviceManager)
    {
        _serviceManager = serviceManager;
    }

    // never assigned by autofac
    public IServiceManager ServiceManager
    {
        get { return _serviceManager; }
        set { _serviceManager = value; }
    }
    ...
}

web.config

代码语言:javascript
复制
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules>
      <add name="AnonymousIdentityModule" type="AnonymousIdentityModule" />
    </modules>
  </system.webServer>

我发现这个与温莎有关的旧文章,但在autofac中没有看到类似的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-29 00:28:43

看看这个问题:IoC依赖注入到自定义HTTP模块-如何?(ASP.NET)

菲尔·哈克的这篇文章是:http://haacked.com/archive/2011/06/02/dependency-injection-with-asp-net-httpmodules.aspx

他们都谈到通过创建另一个HttpModule来初始化DI来向HttpModule提供DI。如果你想要的话,PH还提供了他的HttpModuleMagic的nuget包:

代码语言:javascript
复制
PM> Install-Package HttpModuleMagic

但是,因为HttpModules只创建一次,它们是一种单例,而且您的依赖关系也必须是单例(或者更确切地说,是单个实例)。

因此,如果您需要每个请求依赖项,请查看以下文章:http://blog.sapiensworks.com/post/2013/03/18/Http-Module-Dependecy-Injection-with-Autofac-Gotcha.aspx

这将在需要时使用Factory函数检索适当范围的依赖项。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16803292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档