【发布时间】:2014-01-25 02:13:27
【问题描述】:
MSDN Blog Post 建议使用工厂模式来获取“每个应用程序请求的 UserManager 实例”。同时,我的 Web 应用程序抛出一个错误,说“如果多个线程同时访问同一个上下文实例”是有问题的。该博客似乎与异常消息相矛盾。什么给了?
我收到的异常发生在以下调用中:
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
更大的博客上下文:
您可以使用 Factory 实现来获取 UserManager 的实例 从 OWIN 上下文中。这种模式类似于我们使用的 从 OWIN 上下文中获取 AuthenticationManager 用于登录和 登出。这是获取实例的推荐方法 UserManager 每个应用程序的请求。
完整的异常文本:
在创建模型时不能使用上下文。这 如果在内部使用上下文可能会引发异常 OnModelCreating 方法,或者如果相同的上下文实例被访问 多个线程同时进行。注意 DbContext 的实例成员 和相关的类不保证是线程安全的。 "
【问题讨论】:
-
如果是每个请求,你如何从多个线程访问它?
-
我认为一个 ASP.NET 请求可以有多个线程。
-
VS2013 SPA 模板是一个很好的地方,可以从中抄写这些(文档不足)的东西。
-
@ShaunLuttin 可以,但前提是您(明确)在做一些并行工作
-
很高兴知道。上面的等待代码是否没有明确地做并行工作?我不清楚 .NET 4.5.1 中的异步。
标签: c# asp.net multithreading entity-framework asp.net-identity