我以前问一个问题这里了解 autofac不是我的配置对象时HTTP请求结束。我想现在我有一个更大的问题,becuasse有证据表明它服务了相同的对象请求 - 要求。同样,我使用thier说明这里。我的测试是一个比较复杂的,因为我使用的委托语法来创建一个对象,但我想我标记它请求寿命。的global.asax.cs:

protected void Application_Start(object sender, EventArgs e)
{
    ...
    var builder = new Autofac.Builder.ContainerBuilder();
    builder.Register<IDBConnectionSelector>(
            (c) => new CachingDBConnections(ConstructorArgs...))
        .HttpRequestScoped();

    var container = builder.Build();
    _containerProvider = new ContainerProvider(container);
}
public IContainerProvider ContainerProvider
{
    get { return _containerProvider; }
}
static IContainerProvider _containerProvider;

这里我的目的是寄存器IDBConnectionSelector获得与自定义构造但具有HTTP请求范围中创建的具体类型CachingDBConnections。

在CachingDBConnections的一些方法对象未能在那使我相信我得到了一个相同的我最后一次了,而不是一个新的为每个请求的方式后续请求。

这是否有意义?我在做什么错了?

有帮助吗?

解决方案 2

我想它了!

我是问错误的容器为对象实例 - 我是问应用程序容器为对象,而不是请求容器

D'哦!

其他提示

大多数发生这种情况(在任何IoC容器)的时候,你会发现,沿着依赖关系链一个部件是一个单

E.g。

A - >乙 - > C

如果A是“工厂”,B是“单”和C是“工厂”,则解析会得到一个参考单B,这将始终引用相同的C

为了一个新的C来到达创建每次你解决时,B也必须是“工厂”。

如何是我的猜测?这是什么问题?

尼克

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top