由于某些原因,我的dotnet核心应用程序的连接字符串中的我的MultipleActiveResultSets = True似乎未选择Azure SQL。
我的应用程序连接字符串如下
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一起使用。
我在DbContext中使用DI并添加了这样的服务
services.AddDbContext<Models.Database.DBContext>();
任何帮助将不胜感激。
问题出在我的Startup.cs中。我错过了它。 OnTokenValidated有一个正在调用dbcontext的方法,但我从未等待过结果。没看到来自IDE的任何错误,通常是因为它会警告您不要等待异步方法。更新了等待方法,并添加了OnTokenValidated = async上下文。一切都很好。
答案 0 :(得分:1)
此
在此之前,第二个操作在此上下文上开始 完成。不保证任何实例成员都是线程安全的。
是EF错误,不是SQL Server错误。因此,MultipleActiveResultSets
是无关紧要的。
使用异步方法时,我所有的代码都在等待。 。 。我在DbContext中使用DI
因此,您的DI可能允许在请求之间共享DbContext实例。