Asp.net mvc 5 MVC5、OWIN和Ninject-GetOwinContext问题

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

我有一个MVC5项目正在进行OwinStartup,我正在使用Ninject.MVC5、Ninject.Web.Common.OwinHost等

我有NinjectWebCommon引导DI,一切正常。直到我开始玩身份代码

我需要发出密码重置令牌,这需要DataProtectionProvider。没问题,ApplicationUserManager会在Create方法中将其连接起来,该方法在startup.Auth.cs中启动时绑定到OwinContext:

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的其他问题。我尝试过这种方法,但没有任何运气,没有注射任何东西

非常感谢您的帮助