来自 Azure 托管 Web 应用程序的 SQL Azure 上的“用户登录失败”

Ric*_*lva 8 azure-sql-database connectivity

我有一个使用 SQL Azure db 的 Azure ASP.net MVC Web 应用程序。它工作了几个月(某天由于某种原因 Azure 更改了服务器的名称,我不得不再次设置,但一切正常),但现在它不起作用。

首先我想,他们可能再次更改了服务器名称,但我打开了我的 SSMS 并在重置密码后再次连接。所以我在我的应用程序连接字符串中更改了密码并测试一切正常,是的,调试和测试工作正常。所以我发布了,但是一旦发布应用程序就会抛出错误

Login failed for user 'my_username'
Run Code Online (Sandbox Code Playgroud)

在应用程序中查看了这篇Azure SQL 数据库“用户登录失败”的帖子,但在 SSMS工作正常,这看起来很相似,但我无法在不出错的情况下做到这一点。

我从此更改了连接字符串

Server=tcp:SERVER_NAME.database.windows.net,1433;Database=my_db;User ID=my_username@qtdhcrrxmi;Password={my_password}; Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
Run Code Online (Sandbox Code Playgroud)

对此

Server=tcp:SERVER_NAME.database.windows.net,1433;Initial Catalog=my_db;Persist Security Info=False;User ID={my_username};Password={my_password};Pooling=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
Run Code Online (Sandbox Code Playgroud)

正如 Azure 门户中显示的那样,在数据库连接字符串中。我只删除了属性

 Data Source=SERVER_NAME.database.windows.net;
Run Code Online (Sandbox Code Playgroud)

我还检查了发布过程不会更改连接字符串。

但它仍然适用于调试和 SSMS,但不适用于生产。

Ric*_*lva 10

结果发现问题出在连接字符串中。有一些事情你需要考虑。

首先,Visual Studio 的发布向导中的“设置”选项卡中有一个选项,名为“在运行时使用此连接字符串(更新目标 web.config)”,出于某种原因,无论是否选中,似乎对我都不起作用。但这首先可能是一个选择。

Visual Studio Azure 托管发布向导

另一个设置连接字符串的地方是在 Azure 管理门户中。在 Web 应用程序设置的连接字符串中,您可以检查应用程序有效使用了哪个连接字符串。就我而言,无论我使用什么发布向导设置,这个连接字符串都是错误的。我刚刚删除并使用我的数据库用户名和密码再次创建它,一切又恢复正常。

在此处输入图片说明


小智 5

我挣扎了 2 天才弄清楚为什么即使我的连接字符串正确并且我能够通过 SSMS 连接到数据库服务器,我也会收到“用户'null'登录失败”错误消息。

结果我试图在我的 Azure 帐户的应用程序设置中删除连接字符串。它奏效了。

在此处输入图片说明