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