You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure App Service中.NET Core Web应用启动时'myid'用户登录失败

问题:本地运行.NET 6 Web应用时SQL Server登录失败

已通过流水线在Azure部署了App Service、SQL Server及两个数据库(HangfireDB、MyAppDB),并将压缩后的应用部署至App Service。但在本地开发工具控制台执行dotnet mywebapp.dll时,抛出异常:

Unhandled exception. Microsoft.Data.SqlClient.SqlException (0x80131904): Login failed for user 'myid'.


相关配置信息

Startup.cs 连接字符串配置

services.AddDbContext<MyDBContext>(options =>
{
    options.UseSqlServer(Configuration.GetConnectionString("MyDBContext"));
    options.ConfigureWarnings(warnings => warnings.Ignore(CoreEventId.NavigationBaseIncludeIgnored));
});

services.AddHangfire(options =>
{
    options.UseSqlServerStorage(() => new Microsoft.Data.SqlClient.SqlConnection(Configuration.GetConnectionString("MyHangfireContext")), hangfireConfig);
});

(hangfireConfig为独立定义的SqlServerStorageOptions类型变量)

appsettings 连接字符串

"MyHangfireContext": "Server=tcp:mydb.database.windows.net,1433;Initial Catalog=HangfireDB;Persist Security Info=False;User ID=myid;Password=mypassword;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;",
"MyDBContext": "Server=tcp:mydb.database.windows.net,1433;Initial Catalog=MyAppDB;Persist Security Info=False;User ID=myid;Password=mypassword;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

已设置ASPNETCORE_ENVIRONMENT环境变量确保加载对应环境配置。


排查与解决步骤
  • 检查本地IP是否在Azure SQL防火墙允许列表
    Azure SQL Server默认仅允许Azure服务和指定IP访问。登录Azure门户,找到目标SQL Server,进入「防火墙和虚拟网络」页面,添加当前开发机器的IP地址,保存后重试运行应用。

  • 验证SQL账号权限
    确认myid账号拥有两个数据库的登录及用户权限:

    1. 进入Azure门户对应SQL数据库的「查询编辑器」
    2. 执行以下SQL命令检查:
      -- 检查服务器级登录是否存在
      SELECT name FROM sys.server_principals WHERE name = 'myid';
      -- 检查HangfireDB数据库用户
      USE HangfireDB;
      SELECT name FROM sys.database_principals WHERE name = 'myid';
      -- 检查MyAppDB数据库用户
      USE MyAppDB;
      SELECT name FROM sys.database_principals WHERE name = 'myid';
      

    若不存在,需创建服务器登录并映射到数据库用户,赋予必要操作权限(如db_owner或具体业务权限)。

  • 核对连接字符串的账号密码
    确认appsettings中Password=mypassword与Azure SQL Server设置的登录密码完全一致,注意大小写、特殊字符的正确性。若密码包含特殊字符,需确保在JSON中已正确转义(例如\需写成\\)。

  • 确认环境配置是否正确加载
    在Startup.cs中添加临时日志输出,验证实际加载的连接字符串:

    var myDbConn = Configuration.GetConnectionString("MyDBContext");
    var hangfireConn = Configuration.GetConnectionString("MyHangfireContext");
    Console.WriteLine($"MyDBContext连接字符串: {myDbConn}");
    Console.WriteLine($"MyHangfireContext连接字符串: {hangfireConn}");
    

    运行应用后查看控制台输出,确认服务器地址、账号、数据库名称无误。

  • 直接测试SQL Server连接性
    使用SQL Server Management Studio(SSMS)或Azure Data Studio,尝试用myid账号连接tcp:mydb.database.windows.net,1433。若连接失败,优先解决账号或防火墙问题。

内容的提问来源于stack exchange,提问作者Lucky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:25:23