Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有依赖项注入的ASPNET身份缓存_C#_Asp.net Mvc_Dependency Injection_Ninject_Asp.net Identity 2 - Fatal编程技术网

C# 带有依赖项注入的ASPNET身份缓存

C# 带有依赖项注入的ASPNET身份缓存,c#,asp.net-mvc,dependency-injection,ninject,asp.net-identity-2,C#,Asp.net Mvc,Dependency Injection,Ninject,Asp.net Identity 2,我在一个带有ASPNET Identity 2的MVC应用程序中使用Ninject 登录、注销、更新密码等都可以正常工作。但是,如果我在数据库中更新用户名,ApplicationUserManager似乎正在缓存用户信息 这是注册标识服务的代码: private void RegisterServices() { kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();

我在一个带有ASPNET Identity 2的MVC应用程序中使用Ninject

登录、注销、更新密码等都可以正常工作。但是,如果我在数据库中更新用户名,ApplicationUserManager似乎正在缓存用户信息

这是注册标识服务的代码:

private void RegisterServices()
{
    kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();

    var dbContext = kernel.Get<ApplicationDbContext>();
    kernel.Bind<IUserStore<ApplicationUser>>().To<UserStore<ApplicationUser>>().WithConstructorArgument("context", dbContext);

    kernel.Bind<IAuthenticationManager>().ToMethod(x => HttpContext.Current.GetOwinContext().Authentication);
}
我已经在网上发布了一个解决方案示例。WebApplication1在不使用DI的情况下工作,而WebApplication2在使用Ninject的情况下显示缓存行为


任何关于在DI中使用ASPNET标识的建议都将不胜感激。

好吧,对于初学者来说,你做依赖注入是完全错误的。你根本没有做依赖注入。你在做服务定位,你绕过了所有标准的DI集成点。你能详细说明一下吗?所有控制器都具有构造函数注入,并且服务在组合根目录中注册。我根据Ninject将Ninject内核挂接到OWIN。如果你有一个使用Ninject、OWIN和MVC的替代模式,你能举个例子吗?更重要的是,你没有正确地使用Ninject。您只需使用Ninject.MVC5包,并在App_Start\Ninject webcommon.cs中注册绑定,就可以在owin启动中添加usenject中间件调用,但是配置是由NinjectWebCommon架构处理的,我的理解是NinjectWebCommon.cs只是引导内核,我为什么要删除它。Ninject.MVC5包就在那里,它包含MVC的控制器工厂。如果我切换回NinjectWebCommon.cs,如何在中注册标识服务?另外,指定的app.CreatePerOwinContext回调不会导致内核在每个http请求上返回新实例吗?谢谢Erik。我试着切换回NinjectWebCommon.cs,但我不知道如何将Ninject与OWIN和aspnet标识连接起来,看到了吗?