Azure SQL MultipleActiveResultSets

时间:2018-10-21 07:53:22

标签: azure asp.net-core .net-core azure-sql-database azure-web-sites

由于某些原因,我的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上下文。一切都很好。

1 个答案:

答案 0 :(得分:1)

  

在此之前,第二个操作在此上下文上开始   完成。不保证任何实例成员都是线程安全的。

是EF错误,不是SQL Server错误。因此,MultipleActiveResultSets是无关紧要的。

  

使用异步方法时,我所有的代码都在等待。 。 。我在DbContext中使用DI

因此,您的DI可能允许在请求之间共享DbContext实例。