Мне удалось отследить проблему - это глупая, но тонкая ошибка ...
У меня был класс CurrentUserService, который я регистрировал следующим образом:
builder.Register(c => new CurrentUserService(
c.Resolve<HttpSessionState>(),
c.Resolve<IUserRepository>(),
c.Resolve<IMembershipService>())
).As<ICurrentUserService>()
.CacheInSession();
Проблема в CacheInSession () , потому что CurrentUserService зависит от IUserRepository, который autofac верно вводил, но затем удалял в конце первого запроса.
Это выявляет что-то очевидное, но тонкое, чтобы знать об этом при подключении инъекций зависимости:
Убедитесь, что у иждивенцев высшего порядка всегда такой же или более короткий срок службы, что и у услуг, от которых они зависят. В моем случае решением было изменить приведенный выше код:
builder.Register(c => new CurrentUserService(
c.Resolve<HttpSessionState>(),
c.Resolve<IUserRepository>(),
c.Resolve<IMembershipService>())
).As<ICurrentUserService>()
.InstancePerLifetimeScope();
.... который не позволяет CurrentUserService переиграть экземпляр, от которого он зависит.