【发布时间】:2014-02-16 03:06:31
【问题描述】:
为什么当我们调用 AccountApiController.Register() 方法时会发生这种情况?
- 试图使用上下文是什么?
- 试图创建上下文的是什么?
- 我们如何避免这种情况?
- 我们如何调试这个?
"Message":"发生错误。",
"ExceptionMessage":"模型在运行时不能使用上下文 正在创建。如果使用上下文,可能会抛出此异常 在 OnModelCreating 方法内,或者如果相同的上下文实例是 由多个线程同时访问。请注意,实例成员 DbContext 和相关类的不保证是线程的 安全。”,
"ExceptionType":"System.InvalidOperationException",
“堆栈跟踪”:“
在 System.Web.Http.ApiController.d__1.MoveNext()
--- 从先前抛出异常的位置结束堆栈跟踪
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在 System.Runtime.CompilerServices.TaskAwaiter .HandleNonSuccessAndDebuggerNotification(任务 > 任务)
在 System.Web.Http.Dispatcher.HttpControllerDispatcher.d__0.MoveNext()"
【问题讨论】:
-
请确保您不会对不同的请求使用相同的上下文对象,并确保您在 OnModelCreating 之后发送请求。您可以在方法末尾添加断点。
-
我们如何确保我们不会对不同的请求使用相同的上下文对象?另外,我不确定添加断点是什么意思,因为我们没有 OnModelCreating 方法。
-
我了解到 ASP.NET 标识使用工厂模式来为每个请求获取一个 UserManager 实例;这可能是个问题,因为我们的 UserManager 将数据存储在 DbContext 中。嗯。
-
尝试让你的方法异步,这可能会解决问题
标签: c# asp.net multithreading entity-framework asp.net-identity