无法从 Azure 网站访问 SQL Azure 数据库,但相同的连接字符串可从本地网站访问

Cannot access SQL Azure DB from Azure website but same connection string works from local website

我无法从 Azure 网站访问 SQL Azure 数据库,即使相同的连接字符串在本地网站上有效。错误如下:

System.Data.SqlClient.SqlException (0x80131904): Login failed for user 'XYZ'.
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception,
Boolean breakConnection, Action`1 wrapCloseInAction) at
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, 
Boolean callerHasConnectionLock, Boolean asyncClose) <...>  
Error Number:18456,State:1,Class:14  <...>

查看之前的答案后,

  1. 我已将我的数据库添加到我网站在 Azure 门户上的链接资源。
  2. 我已将 0.0.0.0 - 255.255.255.255 范围添加到我的防火墙排除列表中 不需要!
  3. 我已确保我的连接字符串使用不允许任何 ambiguity
  4. 我已确保 ApplicationDbContext 是使用 correct connection string 构建的。

我还能尝试什么?

网站代码为here.

我不确定您使用的是哪个门户,但是...在预览门户 (portal.azure.com) 中,您的数据库设置页面将有一个 link 到服务器,并且在那里你会找到防火墙设置。除了 IP 范围之外,还有一个选项允许 Azure 服务访问你的数据库。你需要启用它。

manage.windowsazure.com 中的相同内容 - 可通过“配置”选项卡访问设置。

我需要像 Cannot Access Azure DB Server from Azure Website 一样更新我的网站设置,需要复制粘贴整个连接字符串作为第二个参数。这些设置中对我有用的第三个参数是 SQL Server.

这对我来说很有意义,因为我通过 github 在 Azure 上部署。很明显,当你在 github 上上传我的 web.config 时,我取出了我的数据库密码,上传 web.config 的连接字符串和在 github 上上传的连接字符串不能用于访问数据库。因此,在 Azure 网站上指定连接字符串非常有意义,因为我在那里提供的信息是保密的。据推测,这是使用 XDT 完成的,如图 here.

不需要修改防火墙设置。

您收到的错误不是由于 SQL Azure 的防火墙 ACL 问题。该错误会在下面的屏幕截图中显示类似此错误的内容。您一定是连接字符串有问题。

还要确保在您的 SQL Azure 服务器 ACL 设置中选中了允许 Azure 服务连接到它的选项。