即使相同的连接字符串在本地网站上运行,我也无法从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 <...>
检查以前的答案后,
-
我已将我的数据库添加到我的网站在Azure门户上的链接资源 .
-
我已将0.0.0.0 - 255.255.255.255范围添加到我的防火墙排除列表中不需要!
-
我确保我的连接字符串用法不允许任何ambiguity .
-
我确保
ApplicationDbContext
是使用correct connection string构建的 .
我还能尝试什么?
网站代码是here .
3 回答
我不确定您使用的是哪个门户网站,但是...在预览门户网站(portal.azure.com)中,您的数据库设置页面将包含指向服务器的链接,您可以在其中找到防火墙设置 . 除了IP范围之外,还有一个选项允许Azure服务访问您的数据库 . 你需要启用它 .
manage.windowsazure.com中的相同内容 - 可通过“配置”选项卡访问这些设置 .
我需要更新我的网站设置,如Cannot Access Azure DB Server from Azure Website,需要将整个连接字符串复制粘贴为第二个参数 . 这些设置中适用于我的第三个参数是
SQL Server
.这在我的案例中是有道理的,因为我通过github在Azure上部署 . 显然当你在github上传我的web.config时,我把我的数据库密码输出,上传到github上的web.config中的连接字符串不能用来访问数据库 . 因此,在Azure网站上指定连接字符串是完全合理的,因为我在那里提供的信息仍然是私有的 . 据推测,这是使用XDT完成的,如图所示here .
防火墙设置修改是不必要的
您获得的错误不是由于SQL Azure的防火墙ACL问题 . 该错误会在下面的屏幕截图中说明此错误 . 您的连接字符串必须有问题 .
还要确保在SQL Azure服务器ACL设置中选中了选项以允许Azure服务连接到它 .