Azure SQL Server数据库连接报错:error:26 - 无法定位服务器/实例
解决Azure部署ASP.NET Razor Pages后的SQL Server连接错误
核心问题分析
你当前的配置是让Azure上的Web应用连接本地SQL Server实例,这在默认场景下完全不可行——Azure云服务无法直接访问你本地内网中的数据库,除非额外配置复杂的VPN/内网穿透(不推荐新手尝试)。以下是两种可行的解决方向:
方案1:使用Azure SQL Database(推荐生产/正式测试)
这是云部署的标准做法,步骤如下:
- 在Azure门户创建Azure SQL Database实例,完成后进入数据库概览页,点击「显示数据库连接字符串」,复制ADO.NET格式的连接字符串。
- 打开Azure Web App的「配置」→「应用程序设置」,添加新的连接字符串:
- 名称填你项目中DbContext对应的连接字符串名(比如
EmployeeDBContext,前缀保留ConnectionStrings:) - 值填刚才复制的Azure SQL连接字符串,替换其中的
{your_username}和{your_password}为Azure SQL的管理员账号密码
- 名称填你项目中DbContext对应的连接字符串名(比如
- 本地开发时,appsettings.Development.json可以继续指向本地SQL Server;部署到Azure后,Web App会自动优先读取应用程序设置中的连接字符串,无需修改代码。
方案2:临时公网暴露本地数据库(仅限个人测试,不适合生产)
如果只是临时调试,不想用Azure SQL,可按以下步骤操作(注意公网暴露数据库的安全风险):
- 确认本地SQL Server启用SQL Server身份验证(不能仅用Windows验证),创建一个具备数据库读写权限的SQL账号。
- 在路由器后台设置端口转发,将公网1433端口映射到本地SQL Server所在机器的内网IP(比如192.168.1.100)的1433端口。
- 修改生产环境连接字符串为:
Server=你的公网IP,1433;Database=你的数据库名;User Id=SQL账号;Password=密码;TrustServerCertificate=True; - 在Azure门户的SQL Server防火墙规则中,添加你的公网IP(注意动态公网IP可能会变化,需定期更新)。
关于web.config的说明
ASP.NET Core项目默认无需手动创建web.config,部署到Azure后平台会自动生成。连接字符串的配置优先级:Azure Web App应用程序设置 > appsettings.Production.json > appsettings.json,优先用前两者即可。
额外排查步骤
- 确认Azure Web App的应用程序设置中
ASPNETCORE_ENVIRONMENT值为Production,确保加载生产环境配置。 - 用Azure Web App的「控制台」功能,执行
echo %ConnectionStrings:你的连接字符串名%,验证连接字符串是否正确加载。 - 若用方案1,先通过SSMS连接Azure SQL Database,确认账号、密码和防火墙规则有效。
内容的提问来源于stack exchange,提问作者Jupidness
相关产品推荐
相关产品推荐

