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但期望解決時有單個實例? –