【问题标题】:Azure SQL MultipleActiveResultSetsAzure SQL MultipleActiveResultSets
【发布时间】:2019-03-25 13:48:43
【问题描述】:

由于某种原因,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 上下文。现在一切都好。

【问题讨论】:

  • 可能duplicate
  • 谢谢,我看了一下帖子,但仍然没有解决问题。

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


【解决方案1】:

这个

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

是 EF 错误,而不是 SQL Server 错误。所以MultipleActiveResultSets 无关紧要。

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

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

【讨论】:

  • 感谢您的回复。我将如何阻止它在请求之间共享?
  • 没关系。我发现了问题。再次感谢。将更新我的问题
猜你喜欢
  • 2018-09-28
  • 2021-11-10
  • 2013-03-21
  • 2014-11-15
  • 1970-01-01
  • 1970-01-01
  • 2010-10-05
  • 2012-05-15
  • 1970-01-01
相关资源
最近更新 更多