新的MVC 4 web应用程序在IIS 7.5上使用autofac3.0。如何向IHttpModule中注入依赖项?
我尝试了构造函数注入,结果是:
类型“AnonymousIdentityModule”上的构造函数未找到
因此,内部似乎需要一个http模块的无参数构造函数。我也尝试过属性注入,但这导致实际上没有依赖注入。
注册
builder.RegisterType<AnonymousIdentityModule>().As<IHttpModule>().PropertiesAutowired().InstancePerHttpRequest();IHttpModule码
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
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="AnonymousIdentityModule" type="AnonymousIdentityModule" />
</modules>
</system.webServer>我发现这个与温莎有关的旧文章,但在autofac中没有看到类似的。
发布于 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包:
PM> Install-Package HttpModuleMagic但是,因为HttpModules只创建一次,它们是一种单例,而且您的依赖关系也必须是单例(或者更确切地说,是单个实例)。
因此,如果您需要每个请求依赖项,请查看以下文章:http://blog.sapiensworks.com/post/2013/03/18/Http-Module-Dependecy-Injection-with-Autofac-Gotcha.aspx
这将在需要时使用Factory函数检索适当范围的依赖项。
https://stackoverflow.com/questions/16803292
复制相似问题