是否需要关闭或处置ASP.NET Identity的UserManager?

时间:2018-08-02 23:42:56

标签: c# asp.net asp.net-identity

我已经使用ASP.NET Identity已有一段时间了,我一直遵循教程和网站,这些教程和网站总是说要使用以下代码在我的方法中创建UserManager:

var userManager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>()

一切正常,直到有一天,我注意到UserManager实现了IDisposable。为了确保我打开的所有内容均正确关闭,我在所有这些实例中添加了using,突然所有内容都停止了工作。我开始得到“无法访问已处置的对象”。到处都是错误。根据我的研究,显然有些实例已关闭,而其他实例仍在使用。

奇怪的是,当我在网上搜索时,几乎没有甚至没有关于是否应该关闭或处置UserManager或任何其他Manager(即SignInManager,RoleManager)的信息。

那么,对此有什么共识?那些经理是否应该关闭/解雇?如果不是,那么如果不在方法内部,我们应该在哪里声明它们呢?我读过它们不应该是静态的。

1 个答案:

答案 0 :(得分:0)

我可能找到了答案。在我不断探索晦涩的链接之后,我发现了此MSDN博客文章,该文章解释了这些Manager应该是单实例的,并确切解释了如何在页面或控制器中声明它们: https://blogs.msdn.microsoft.com/webdev/2014/02/12/per-request-lifetime-management-for-usermanager-class-in-asp-net-identity/