Azure Web 应用程序连接到 SQL 数据库随机错误

Azure web app Connect to SQL Database random error

我有一个 Azure Web 应用程序 运行ning 需要连接到 Azure SQL 数据库。 我的测试方法是使用托管身份验证 Web 应用程序。

所以在我的网络应用程序中我激活了托管身份,之后我登录到我的数据库并运行以下脚本:

CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];

将我的数据库的连接字符串保存并更新到我的网络应用程序中,然后重新启动。 几个小时内一切正常,之后我开始收到此错误:

Microsoft.Data.SqlClient.SqlException (0x80131904): Login failed for user '<token-identified principal>'.
   at Microsoft.Data.ProviderBase.DbConnectionPool.CheckPoolBlockingPeriod(Exception e)
   at Microsoft.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)

这让我感到困惑,因为在 wb 应用程序重新启动后,我可以看到网络应用程序能够连接到数据库并检索数据..但是几个小时后它突然开始抛出错误。

以前有没有人遇到过这种情况,可以指导我解决这个问题的正确途径吗?

不用说,我已将我的 Entityframework 和 Data.SqlClient 更新到正确的版本,以促进这种方法的记录。

非常感谢您提供的任何帮助

Microsoft.Data.SqlClient.SqlException (0x80131904): Login failed for user '<token-identified principal>'.
   at Microsoft.Data.ProviderBase.DbConnectionPool.CheckPoolBlockingPeriod(Exception e)
   at Microsoft.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
  1. 为您的应用程序保留系统分配的标识。
  2. 在 Azure SQL 服务器中将自己设置为管理员。
  3. “允许 Azure 服务和资源访问此服务器”应在 Azure SQL 数据库的防火墙和虚拟网络设置中设置为是。
  4. 通过 SQLCMD 命令登录 SQL 数据库。
  5. 授予身份权限。

可能您的应用程序没有正确且一致地关闭其数据库连接。您确保您确实关闭了连接

参考:https://www.c-sharpcorner.com/blogs/resolved-login-failed-for-user-tokenidentified-principal