无法从应用程序连接到SQL Azure,但可以从SSMS连接

Ale*_*gas 9 asp.net-mvc entity-framework connection-string azure azure-sql-database

我有一个SQL Azure实例设置,可以连接到它,没有SQL Server Management Studio的问题.但是,当我的应用程序尝试连接时,会发生此错误:

建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)

我正在使用Entity Framework Code First 4.1和ASP.NET MVC 3.我的应用程序最初是使用SQL Express成功开发的.现在我正在使用本教程将数据库移动到SQL Azure(该应用程序最终将移动到那里,但开发仍在继续).

既然SSMS工作正常我猜它归结为web.config?我已经尝试了连接字符串名称的每个组合:

<connectionStrings>
    <add name="ApplicationServices" connectionString="Server=tcp:suppressed.database.windows.net,1433;Database=EventsTest;User ID=suppressed;Password=suppressed;Trusted_Connection=False;Encrypt=True;PersistSecurityInfo=True;" providerName="System.Data.SqlClient" />
    <add name="DomainContext" connectionString="Server=tcp:suppressed.database.windows.net,1433;Database=EventsTest;User ID=suppressed;Password=suppressed;Trusted_Connection=False;Encrypt=True;PersistSecurityInfo=True;" providerName="System.Data.SqlClient" />
    <add name="Events.DataAccess.EntityFramework.DomainContext" connectionString="Server=tcp:suppressed.database.windows.net,1433;Database=EventsTest;User ID=suppressed;Password=suppressed;Trusted_Connection=False;Encrypt=True;PersistSecurityInfo=True;" providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

我也尝试过Wireshark,我对此知之甚少,但似乎建议了一些活动(192.168.1.101是我的机器,207.46.63.13是SQL Azure服务器):

1   0.000000    192.168.1.101   207.46.63.13    TCP [TCP segment of a reassembled PDU]
2   0.116269    207.46.63.13    192.168.1.101   TCP ms-sql-s > bmc-net-adm [ACK] Seq=1 Ack=2 Win=8444 Len=0
3   2.091928    192.168.1.101   207.46.63.13    TCP [TCP segment of a reassembled PDU]
4   2.209371    207.46.63.13    192.168.1.101   TCP ms-sql-s > kmscontrol [ACK] Seq=1 Ack=2 Win=5969 Len=0
5   2.352974    192.168.1.101   207.46.63.13    TCP [TCP segment of a reassembled PDU]
6   2.469444    207.46.63.13    192.168.1.101   TCP ms-sql-s > vaultbase [ACK] Seq=1 Ack=2 Win=8625 Len=0

有什么想法可能会发生什么?

Ale*_*gas 2

我加强了DomainContext : DbContext类中的调试,发现连接字符串始终指向 SQL Express,即使 web.config 中的所有这些条目都指向其他地方。然后我意识到问题出在构造函数中传递给基类的参数。

在此过程中,我认为这个参数是要使用的数据库的名称。现在我意识到它是连接字符串条目的名称(或连接字符串本身)。