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