Я использую Autofac для проекта MVC с Web API.
Я регистрирую все контроллеры:
builder.RegisterControllers(assembly);
builder.RegisterApiControllers(assembly);
и
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
I 'Я также использую OWIN, и я регистрирую UserManager
для каждого запроса OWIN:
app.CreatePerOwinContext(() => AutofacDependencyResolver.Current.GetService<UserManager>());
Для UserManager
требуется экземпляр DbContext
, который настраивается для создания одного раза для каждого запроса:
builder.RegisterType<DbContext>()
.AsSelf()
.InstancePerRequest();
Вот проблема:
При доступе к контроллеру Web API создается DbContext
для удовлетворения вызова CreatePerOwinContext
.Затем в моем контроллере я ввожу еще один DbContext
, и я ожидал, что экземпляр, введенный в контроллер, будет таким же, созданным в вызове CreatePerOwinContext
, , но это не !Если я получаю доступ к контроллеру MVC, все работает как положено.
Я думаю, что Autofac использует два разных распознавателя, а не разделяет экземпляры между ними.Как я могу решить это?