【发布时间】:2015-10-29 18:09:52
【问题描述】:
在生产中,我的应用开始出现这个错误:
The underlying provider failed on Open
据我所知,在本地测试应用程序时我没有收到此错误(至少无论我做什么我都无法得到它)。我正在使用 Azure SQL 服务器,这是我的连接字符串:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=myserver.windows.net,1433;Database=mydb;User ID=username;Password=password;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
</connectionStrings>
这是我遇到错误的方法之一:
public IEnumerable<Country> GetCountries()
{
List<Country> countries;
using (var databaseContext = new Database())
{
countries = databaseContext.Countries.OrderBy(c => c.Name).ToList();
}
return countries;
}
我还想强调,错误并非一直都在发生,它是随机发生的。今天开始发生这种情况,我没有更改此代码,也没有更改连接字符串,也没有更改数据库设置,但是(!)我已经将一些方法从同步重构为异步 - 我不知道这是否与这个特定问题有关。
据我所知,这仅发生在 ASP.net Web API 项目中,而不发生在 ASP:net MVC 项目中(它们共享相同的服务层并从服务中调用相同的方法)
最后是整个堆栈跟踪的 Pastebin 链接(我不会在这里粘贴它,因为它太大了):link
【问题讨论】:
-
它是随机的还是总是链接到异步函数(如 GetUsaStates() )?如果是这样,我希望一个新线程无法访问在启动线程上创建的 EF 上下文
标签: c# asp.net entity-framework azure