为什么我们打电话给AccountApicController时会发生这种情况.Register()方法?

  • 什么是试图利用上下文?
  • 什么是试图创造环境?
  • 我们如何避免这种情况?
  • 我们如何调试它?

"message":"出现错误.",

"ExceptionMessage":"模型处于 正在被创造.如果使用上下文,则可能引发此异常 在OnModelCreating方法内,或者如果相同的上下文实例 由多个线程并发访问.请注意,实例成员 不能保证DbContext和相关类的 安全.",

"异常类型":"System.InvalidOperationException",

"StackTrace":

在系统中.网状物Http.ApiController.d___1.下一步

---来自引发异常的前一个位置的堆栈结束跟踪

在系统中.运行时.编译器服务.任务等待者.ThrowForNonSuccess(任务)

at System.Runtime.CompilerServices.TaskAwaiter .HandleNonSuccessAndDebuggerNotification(Task > task)

在System.Web.Http.Dispatcher.HttpControllerDispatcher.d__0.MoveNext()"

推荐答案

问题是我们没有使用MS recommends的工厂模式.

您可以使用工厂实现来获取UserManager的实例

因此,"同一上下文实例由多个线程并发访问",因为多个请求和线程共享一个DbContext.

This following is correct.它为每次调用UserManagerFactory函数创建一个新的MyDbContext实例.

UserManagerFactory 
= () => new UserManager<IdentityUser>(new UserStore<IdentityUser>(new MyDbContext()));

The following is incorrect.它看起来类似,但不会 for each 对UserManagerFactory的调用创建一个新实例.这是我们正在使用的,因此我们的网站崩溃了.

var userStore = new UserStore<IdentityUser>(new MyDbContext());                    
var userManager = new UserManager<IdentityUser>(userStore);
UserManagerFactory = () => userManager;

Asp.net相关问答推荐

Swashbuckle 通过 .NET 应用程序中的 XML 注释使用格式标识符

如何在 IIS 上配置 Web Deploy 发布功能,以便开发人员可以发布?

如何从 JavaScript 调用 C# 函数?

如何将配置转换应用于外部配置文件

如果站点在 localhost 或 127.0.0.1 上运行,如何判断 ASP.NET MVC 视图

使用 jQuery.ajax() 时如何处理错误?

在视图 Mvc.net 中访问路由值

Request.Params 和 Request.Form 什么时候不同?

在 Asp.net Rowcommand 事件中获取行索引

与将 Web 应用程序保存在一个默认应用程序池中相比,拥有专用应用程序池的优缺点

什么时候不应该使用 Web 服务?

ASP.NET 日期时间 Select 器

如何获取 ActionLink 的工具提示?

如何在 ASP.NET 页面中以编程方式生成 401 错误

Azure Functions 中的 DI

回发不适用于 aspx 页面作为默认文档

ASP.NET 按钮重定向到另一个页面

System.Linq.IQueryable 不包含Where的定义

在 Visual Studio 2012 中调试 .NET Framework 源代码?

Session.Clear() 与 Session.RemoveAll()