Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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# ASP.NET Identity 2.0。DbContext对象的生存期管理_C#_Asp.net_Asp.net Mvc_Asp.net Identity 2 - Fatal编程技术网

C# ASP.NET Identity 2.0。DbContext对象的生存期管理

C# ASP.NET Identity 2.0。DbContext对象的生存期管理,c#,asp.net,asp.net-mvc,asp.net-identity-2,C#,Asp.net,Asp.net Mvc,Asp.net Identity 2,根据本文(默认的ASP.NET MVC 5模板实现了这种方法)ApplicationUserManager对象应该每个请求创建一次。这意味着,ApplicationUserManager.Create(IdentityFactoryOptions,IOwinContext上下文)方法将为每个请求调用。但此方法具有以下代码: public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUse

根据本文(默认的ASP.NET MVC 5模板实现了这种方法)ApplicationUserManager对象应该每个请求创建一次。这意味着,ApplicationUserManager.Create(IdentityFactoryOptions,IOwinContext上下文)方法将为每个请求调用。但此方法具有以下代码:

   public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) 
    {
        var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()));
        ...
    }
公共静态应用程序服务器管理器创建(IdentityFactoryOptions选项,IOwinContext上下文)
{
var manager=newapplicationUserManager(newuserstore(context.Get());
...
}
这段代码意味着,每个请求都会创建ApplicationDbContext对象。这就是为什么,我有几个问题

  • 为每个请求创建新的ApplicationDbContext对象是否正常
  • 如果为每个请求创建ApplicationDbContext不是一种好做法,我如何避免这样做
  • 事实上,我可以用Owin替换DI容器并使用CreatePerOwinContextGetOwinContext().Get()方法吗?事实上,基于OWIN的方法可以取代控制器的依赖注入,但我在OWIN中找不到生命周期管理
  • 如果我不能做到这一点,我如何结合基于OWIN的ASP.NET标识和DI容器 更新


    我忘了提到,我计划使用MongoDb和mongosharp驱动程序来存储数据。也就是说,我可以为所有应用程序保留一个连接

    请完整阅读本文。我相信它会回答你所有的问题。非常有用。如果我使用MongoDb和mongosharp驱动程序,我该怎么办?这是另一个主题(我没有经验),您应该创建另一个线程,使用特定的标记和标题完全阅读本文。我相信它会回答你所有的问题。非常有用。如果我使用MongoDb和mongosharp驱动程序,我该怎么办?这是另一个主题(我没有经验),您应该使用特定的标签和标题创建另一个线程