【发布时间】:2015-09-21 20:42:55
【问题描述】:
为了学习 Asp.Net Identity,我一直在使用 Microsoft 提供的 Identity Samples 模板,该模板可以通过 NuGet 下载。
https://www.nuget.org/packages/Microsoft.AspNet.Identity.Samples/2.1.0-alpha1
或者在包管理器控制台中运行:
安装包 Microsoft.AspNet.Identity.Samples -Pre
请注意
此示例与 Visual Studio 附带的示例不同。 VS 附带的仍然使用 Identity V1.0,而 NuGet 上的包使用 V2.1。因此,我没有在 VS 示例中仅验证 NuGet 示例中的这种行为。
我的简单问题是,为什么在我加载的每个页面上都调用 DbContext 实例 (ApplicationDbContext) 而不仅仅是使用数据库的页面/操作?
例如,如果我在 ApplicationDbContext 方法上放置一个断点,然后从 Index 页面导航到 Contact 页面,或者从 Contact 页面导航到 Index 页面,甚至到我创建的随机测试页面,DBContext 方法被触发并贯穿所有 UserManager、RoleManager 和 SignInManager 代码。
这正常吗?返回与数据库无关的视图似乎需要做很多额外的工作......
【问题讨论】:
-
您是否追踪到
dbContext的调用来自何处?有一个选项可以检查每个请求的 cookie 有效性 - 如果是这种情况,可以调低。 -
这取决于身份验证的设置方式,可能是它在每次请求时重新创建用户 cookie,因此会通过 userManager 等。
-
@trailmax 我确实查看了调用层次结构和调用堆栈,但没有看到任何明显的东西。我也是编程和 VS 的新手,所以我可能找错了地方。知道在哪里可以减少 cookie 验证吗?
标签: asp.net asp.net-mvc asp.net-mvc-5 dbcontext asp.net-identity-2