SqlException (0x80131904):在 Azure 上托管的 .NET 6 WebAPI 上的用户“dbuser”登录失败

Posted

技术标签:

【中文标题】SqlException (0x80131904):在 Azure 上托管的 .NET 6 WebAPI 上的用户“dbuser”登录失败【英文标题】:SqlException (0x80131904): Login failed for user 'dbuser' on .NET 6 WebAPI Hosted on Azure 【发布时间】:2022-01-13 15:02:15 【问题描述】:

我在 Azure 上部署了 .NET 6 WebApi,但它抛出 Microsoft.Data.SqlClient.SqlException (0x80131904): Login failed for user 'dbuser' 异常但相同的 WebApi 在托管在不同的服务器上时可以正常工作。我在 appsettings.json 中使用相同的 ConnectionString,并且数据库服务器在 Azure 上。我已经没有办法解决这个问题,因为它在不同的托管环境中运行良好,并且我使用了应用服务在 Azure 中创建了一个部署容器。我使用 Visual Studio 2022 部署它。

异常详情可访问here

Azure WebApi 失败

在实验服务器上工作的 WebApi

【问题讨论】:

服务器连接数据库有两种方式 1) 将客户端用户凭据转发到数据库 2) 用户使用唯一的服务器凭据。我需要知道正在使用哪种方法。方法 1 通过使用客户端角色。请参阅:docs.microsoft.com/en-us/aspnet/web-forms/overview/… @jdweng 我正在使用方法 1,混淆源于 Azure 拒绝 Azure 中数据库的凭据这一事实。另一台服务器使用相同的连接字符串很好地连接到同一个数据库。 服务器需要通过密码服务器来验证用户的凭据。所以域或名称服务器有问题。 @jdweng 我在 connectionString 中使用了数据库服务器凭据,但它不适用于 Azure 部署:Server=tcp:dbServerName.database.windows.net,1433;Initial Catalog=dbNamep;Persist Security Info =False;用户 ID=dbUser;Password=dbPassword;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30; 我会在工作和非工作系统上打开一个 cmd.exe 并比较 >IPConfig/all 的结果 【参考方案1】:

好吧,我无法确切说明问题出在哪里,但执行以下操作会有所帮助。

    我在 Azure 中删除了我的应用服务 我在 Visual Studio 中删除了我的发布/部署配置文件 我使用 Visual Studio Azure 部署选项重新创建了我的应用服务 我在 Stack Settings 下将我的 App Service .Net 版本从 .Net 5 更新为 .NET 6 我没有配置 SQL Server 数据库服务依赖项,这将强制应用读取 appsettings.json 中预配置的 ConnectionString 我发布了这个应用,这次它可以正常工作了。

【讨论】:

以上是关于SqlException (0x80131904):在 Azure 上托管的 .NET 6 WebAPI 上的用户“dbuser”登录失败的主要内容,如果未能解决你的问题,请参考以下文章

错误:System.Data.SqlClient.SqlException(0x80131904):转换 nvarchar 值时转换失败 [关闭]

SqlException (0x80131904):在 Azure 上托管的 .NET 6 WebAPI 上的用户“dbuser”登录失败

如何修复此错误:Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid column name 'NormalizedEmail' 等

SharePoint "System.Data.SqlClient.SqlException (0x80131904): Parameter '@someColumn' wa

SQL Server (0x80131904):字符串或二进制数据将被截断 [重复]

ABP常见问题