1
我在asp.net mvc和webapi项目中使用autofac。Autofac在asp.net mvc web api中返回不同实例
在配置我这样做:
var builder = new ContainerBuilder();
builder.Register(x => NHibernateConfigurator.BuildSessionFactory()).SingleInstance();
builder.Register(x => x.Resolve<ISessionFactory>().OpenSession()).InstancePerHttpRequest();
builder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
现在的问题是,在一个API控制器,如果我通过建筑工注入的Isession也叫
DependencyResolver.Current.GetService<ISession>()
它将返回2不同的实例。
我猜问题是因为这2行:
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
但我怎么可以让它返回同一个实例?
编辑:
只是为了更清楚 - 我每次的HttpRequest期待的Isession的同一个实例。现在我在同一请求中获得不同的实例。
感谢
你如何注册ISession? –
它在顶部,它说NHibernateConfigurator ..等,然后x.Resolve()。OpenSession() –
sirrocco
你注册它为InstancePerHttpRequest但期望解决时有单个实例? –