由于某些原因,Azure SQL似乎没有在我的dotnet核心应用程序的连接字符串中选择我的MultipleActiveResultSets=True。
我的应用程序连接字符串如下所示
Server=tcp:xxx.database.windows.net,1433;Initial Catalog=xxx;User ID=xxx;Password=xxxxx;MultipleActiveResultSets=True;Encrypt=True;"
我仍然不断收到这个错误
A second operation started on this context before a previous operation completed. Any instance members are not guaranteed to be thread safe.
当使用异步方法时,我的所有代码都在等待,所以我不知道还能做什么,因为这些代码可以与本地sql一起工作。
我将DI与我的DbContext一起使用,并像这样添加服务
services.AddDbContext<Models.Database.DBContext>();
任何帮助都将不胜感激。
更新
问题出在我的Startup.cs上。我错过了。OnTokenValidated有一个调用dbcontext的方法,但我从未等待过结果。我没有从IDE中看到任何错误,因为正常情况下,它会警告您不等待异步方法。使用await更新了方法,并添加了OnTokenValidated = async上下文。现在一切都好了。
发布于 2018-10-22 01:54:58
这
在前一个操作完成之前在此上下文上启动的第二个操作。不能保证任何实例成员都是线程安全的。
是EF错误,而不是SQL Server错误。所以MultipleActiveResultSets
是无关紧要的。
在使用异步方法时,我的所有代码都在等待。。.I在我的DbContext中使用DI
因此,您的DI可能允许在请求之间共享DbContext实例。
https://stackoverflow.com/questions/52913199
复制相似问题