在制作中,我已经开始在我的应用中收到此错误:
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;
}
此外,我想强调错误不会一直发生,它有点随机发生。这开始发生在今天,我没有改变这个代码,也没有连接sting,也没有数据库设置,但是(!)我已经重构了从同步到异步的一些方法 - 我不知道这是以某种方式连接到这个特定的问题。
另据我所知,这只发生在ASP.net Web API项目中,而不是发生在ASP:net MVC项目中(它们共享相同的服务层并从服务中调用相同的方法)
最后这里是Pastebin链接到整个堆栈跟踪(我不会在这里粘贴它,因为它太大了):link
答案 0 :(得分:2)
请参阅此帖:Error 'The underlying provider failed on Open'。
应该解决您问题的帖子的摘录如下:
将我的代码更改为以下代码修复它:
using (DatabaseEntities context = new DatabaseEntities())
{
context.Connection.Open();
// the rest
}
答案 1 :(得分:0)
将连接字符串添加到dbcontext构造函数,如`
public YourDbContext()
:base(name="YourDbContext")
{
this.Database.Connection.ConnectionString = "Data Source=****;Initial Catalog=****;User ID=****;Password=****";
}
答案 2 :(得分:0)
在Azure中测试时遇到了相同的错误。就我而言,我忘记更新应用程序web.config中的密码。发布更新对我来说很好。