Я использую Simple Injector в своем проекте ASP.NET WEb API для внедрения зависимостей и OAuth для аутентификации. Для этого мне нужно разрешить интерфейс внутри метода GrantResourceOwnerCredentials
, например:
using (IBusiness business = Injector.Container.GetInstance<IBusiness>())
{
}
Но когда он проходит в этой точке, он показывает мне эту ошибку:
Бизнес зарегистрирован как стиль жизни «Async Scoped», но экземпляр запрашивается вне контекста активной области действия (Async Scoped).
И я настраиваю свой контейнер с помощью одного метода:
public class Injector
{
private static Container container;
public static Container Container
{
get
{
if (container == null)
{
container = new Container();
container.Options.DefaultLifestyle = Lifestyle.Scoped;
container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle();
}
return container;
}
}
public static TInstance GetInstance<TInstance>() where TInstance : class
{
return Container.GetInstance<TInstance>();
}
}
Я регистрирую зависимости с помощью этого кода:
Injector.Container.Register<IBusiness, Business>(Lifestyle.Scoped);