Asp.net mvc 5 MVC5、OWIN和Ninject-GetOwinContext问题
我有一个MVC5项目正在进行OwinStartup,我正在使用Ninject.MVC5、Ninject.Web.Common.OwinHost等 我有NinjectWebCommon引导DI,一切正常。直到我开始玩身份代码 我需要发出密码重置令牌,这需要DataProtectionProvider。没问题,ApplicationUserManager会在Create方法中将其连接起来,该方法在startup.Auth.cs中启动时绑定到OwinContext:Asp.net mvc 5 MVC5、OWIN和Ninject-GetOwinContext问题,asp.net-mvc-5,ninject,Asp.net Mvc 5,Ninject,我有一个MVC5项目正在进行OwinStartup,我正在使用Ninject.MVC5、Ninject.Web.Common.OwinHost等 我有NinjectWebCommon引导DI,一切正常。直到我开始玩身份代码 我需要发出密码重置令牌,这需要DataProtectionProvider。没问题,ApplicationUserManager会在Create方法中将其连接起来,该方法在startup.Auth.cs中启动时绑定到OwinContext: public void Confi
public void ConfigureAuth(IAppBuilder app)
{
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
...
}
public void ConfigureAuth(IAppBuilder应用程序)
{
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext(ApplicationUserManager.Create);
...
}
在我的NinjectWebCommon中,我有以下注册:
kernel.Bind<IDataContext>()
.ToMethod(ctx => HttpContext.Current.GetOwinContext().Get<ApplicationDbContext>())
.InRequestScope();
kernel.Bind<IApplicationUserManager>()
.ToMethod(ctx => HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>())
.InRequestScope();
kernel.Bind()
.ToMethod(ctx=>HttpContext.Current.GetOwinContext().Get())
.InRequestScope();
kernel.Bind()
.ToMethod(ctx=>HttpContext.Current.GetOwinContext().GetUserManager())
.InRequestScope();
我遇到的问题是代币没有被发行。为什么我的问题不是关于这个?好的,如果我得到一个ApplicationUserManager实例,使用Create-yourself并使用它,事情就会完美地工作
接下来,我发现了一个报告的用户创建错误。连字符在用户名中不起作用。在同一个ApplicationUserManager.Create方法中,是覆盖默认AllowOnlyAlphanumericUserNames值的UserValidator代码
同样,如果我使用自创建的依赖项,它会按预期工作。这似乎表明Ninject的注入依赖项没有使用ApplicationUserManager.Create的版本
我猜这与调用:HttpContext.Current.GetOwinContext
在注册解析程序时,是否需要执行某些操作才能注入依赖于owin上下文的内容,或者执行其他操作
我在这里看到了显示UsenjectMiddleware和UsenjectWebAPI的其他问题。我尝试过这种方法,但没有任何运气,没有注射任何东西
非常感谢您的帮助