Зарегистрируйте IAuthenticationManager с помощью простого инжектора

У меня есть настройка конфигурации для Simple Injector, где я перенес все свои регистрации в конвейер OWIN.

Теперь проблема у меня есть контроллерAccountController который на самом деле принимает параметры как

public AccountController(
    AngularAppUserManager userManager, 
    AngularAppSignInManager signinManager, 
    IAuthenticationManager authenticationManager)
{
    this._userManager = userManager;
    this._signInManager = signinManager;
    this._authenticationManager = authenticationManager;
}

Теперь мои конфигурации Оуэна Трубопровода выглядят примерно так

public void Configure(IAppBuilder app)
{
    _container = new Container();
    ConfigureOwinSecurity(app);
    ConfigureWebApi(app);
    ConfigureSimpleinjector(_container);

    app.Use(async (context, next) =>
    {
        _container.Register<IOwinContext>(() => context);
        await next();
    });

    _container.Register<IAuthenticationManager>(
        () => _container.GetInstance<IOwinContext>().Authentication);

    _container.Register<SignInManager<Users, Guid>, AngularAppSignInManager>();
}

private static void ConfigureOwinSecurity(IAppBuilder app)
{
    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        CookieName = "AppNgCookie",
        //LoginPath = new PathString("/Account/Login")
    });
}

private static void ConfigureWebApi(IAppBuilder app)
{
    HttpConfiguration config = new HttpConfiguration();
    WebApiConfig.Register(config);
    app.UseWebApi(config);
}

private static void ConfigureSimpleinjector(Container container)
{
    SimpleInjectorInitializer.Initialize(container);
}

И Simple Injector Initializer выглядит примерно так

private static void InitializeContainer(Container container)
{
    container.Register<DbContext, AngularAppContext>();

    container.Register<IUserStore<Users, Guid>, AngularAppUserStore>();
    container.Register<IRoleStore<Roles, Guid>, AngularAppRoleStore>();

    container.Register<UserManager<Users, Guid>, AngularAppUserManager>();
    container.Register<RoleManager<Roles, Guid>, AngularAppRoleManager>();
    //container.RegisterPerWebRequest<SignInManager<Users, Guid>, AngularAppSignInManager>();

    container.Register<IdentityFactoryOptions<AngularAppUserManager>, IdentityFactoryOptions<AngularAppUserManager>>();
    //container.Register<IAuthenticationManager>(() => HttpContext.Current.GetOwinContext().Authentication);

    //container.Register<SignInManager<Users, Guid>, AngularAppSignInManager>();
    // For instance:
    // container.Register<IUserRepository, SqlUserRepository>();
}

Теперь проблема в том, что контроллер не может зарегистрироватьсяIAuthenticationManager, Я пытался с помощью

container.Register<IAuthenticationManager>(
    () => HttpContext.Current.GetOwinContext().Authentication);

Но это оставляет меня с исключением как:

System.InvalidOperationException: Элемент owin.Environment не найден в контексте.

В этой строке

container.Register<IAuthenticationManager>(
    () => HttpContext.Current.GetOwinContext().Authentication);

Я тоже пытался вместо того, чтобы использоватьHttpContext.Current.GetOwinContext().Authentication с конфигурацией, упомянутой выше вpublic void Configure(app) метод регистрации с помощьюapp.Use(), А затем разрешите его через контейнер, чтобы получитьIAuthenticationManager, Но все возможности оставили меня неудачной.

Что мне здесь не хватает? ЗачемHttpContext.Current.GetOwinContext().Authentcation не удается разрешить аутентификацию из OwinContext?

И если это не так, почему такая же конфигурация черезapp.Use тоже не работает?

Ответы на вопрос(3)

Ваш ответ на вопрос