当前位置:  开发笔记 > 运维 > 正文

如何使用Autofac确保每个请求有一个NHibernate ISession?

如何解决《如何使用Autofac确保每个请求有一个NHibernateISession?》经验,为你挑选了1个好方法。

我在Application_Start方法中使用的Autofac模块中有以下代码:

builder.Register(c => new Configuration().Configure().BuildSessionFactory())
    .SingletonScoped();
builder.Register(c => c.Resolve().OpenSession())
    .HttpRequestScoped();

builder.Register().As();

存储库的构造函数将ISession作为参数.但是我最终为整个应用程序提供了一个会话,即使我明确要求它是HttpRequestScoped.

我已经配置了ContainerDisposal HTTP模块.

根据文档,您必须创建一个嵌套容器,但我让Autofac自动装配依赖项.

我该怎么办?

谢谢!



1> Michiel van ..:

我发现了问题,所以我会回答我自己的问题.

我使用默认范围注册了我的存储库,在Autofac中是单例范围.我应该这样做:

builder.Register()
    .As()
    .HttpRequestScoped;

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有