EF:底层提供程序在Open上失败

时间:2015-10-29 18:09:53

标签: c# asp.net entity-framework azure

在制作中,我已经开始在我的应用中收到此错误:

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

3 个答案:

答案 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中的密码。发布更新对我来说很好。