Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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# OWin Appbuilder每次事件重建应用程序70-125次_C#_Asp.net_Asp.net Identity_Owin - Fatal编程技术网

C# OWin Appbuilder每次事件重建应用程序70-125次

C# OWin Appbuilder每次事件重建应用程序70-125次,c#,asp.net,asp.net-identity,owin,C#,Asp.net,Asp.net Identity,Owin,例如,我一直在学习一些关于在我的ASP.net应用程序中集成OWin标识的教程 所以我的StartupLogin现在有了这个方法 public static void ConfigureAuth(IAppBuilder app) { app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); app.CreatePerOwinContext<Applicatio

例如,我一直在学习一些关于在我的ASP.net应用程序中集成OWin标识的教程

所以我的StartupLogin现在有了这个方法

public static void ConfigureAuth(IAppBuilder app)
{
    app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
    app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
    app.CreatePerOwinContext<ApplicationRoleManager>(Application‌​RoleManager.Create);

    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
    [...]
线路呢

app.CreatePerOwinContext(DebugManager.Create);
查看调试窗口,我看到
Create()
方法在初始应用程序启动时调用了74次,在其他操作(如登录、页面刷新、注销等)时调用了120-124次(!!!!)

这不可能是它应该工作的方式,对吗?
create
函数应该只调用一次,之后可以通过
OWinContext.get
获取对象的实例,对吗?这是怎么回事?

我找到了答案

Owin中的依赖注入 。。。每次从HttpContext中提取OwinContext时,它都会返回一个新的上下文。。。如果我们在这里应用DI术语,那么您的对象将在每个请求范围内注册,正如您所期望的那样

我最近在中了解到了“瞬态”、“作用域”和“单例”之间的区别

事实证明,我们(非常大)项目的页面请求(在开发模式下,静态文件的缓存处于关闭状态)导致125个服务器请求,这导致了问题

app.CreatePerOwinContext(DebugManager.Create);