我之前在这里问过一个关于 autofac 在 HTTP 请求结束时不处理我的对象的问题。我现在认为我有一个更大的问题,因为有证据表明它正在提供 SAME 对象请求到请求。同样,我在这里使用他们的说明。我的测试有点复杂,因为我使用委托语法来创建一个对象,但我认为我将它标记为请求生命周期。全球.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 对象的某些方法在后续请求中失败,这让我相信我得到的是上次得到的相同方法,而不是每个请求的新方法。
那有意义吗?我究竟做错了什么?