c# asp.net-mvc owin simple-injector

c# - ¿Cómo obtener OwinContext de Global.asax?



asp.net-mvc simple-injector (1)

He arreglado esto con lo siguiente:

container.RegisterPerWebRequest(() => { if (HttpContext.Current != null && HttpContext.Current.Items["owin.Environment"] == null && container.IsVerifying()) { return new OwinContext().Authentication; } return HttpContext.Current.GetOwinContext().Authentication; });

Parece que OwnContext no está presente en el inicio, así que lo esperaré e inyectaré una vez que esté presente. Tenga en cuenta que el container.IsVerifying() está presente en SimpleInjector.Advanced

Estoy tratando de configurar mi inyección de dependencia y tengo la necesidad de inyectar un IAuthenticationManager de la identidad de ASP.NET a un OwinContext .

Para esto soy de mi Global.asax -> ServiceConfig.Configure() ejecutando:

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

Pero cuando estoy ejecutando mi aplicación recibo este mensaje:

No se encontró ningún elemento owin.Environment en el contexto

¿Por qué este HttpContext.Current.GetOwinContext () no está disponible en Global.asax?

Startup.cs

[assembly: OwinStartupAttribute(typeof(MyApp.Web.Startup))] namespace Speedop.Web { public partial class Startup { public void Configuration(IAppBuilder app) { ConfigureAuth(app); } } }

Startup.Auth.cs

public partial class Startup { public void ConfigureAuth(IAppBuilder app) { app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login"), Provider = new CookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<UserManager<User, int>, User, int>( validateInterval: TimeSpan.FromMinutes(30), regenerateIdentityCallback: (manager, user) => manager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie), getUserIdCallback: (id) => (Int32.Parse(id.GetUserId())) ) } }); app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); } }