ASP.NET Core Web API部署至Azure后出现500内部服务器错误求助
解决Azure发布ASP.NET Core Web API后出现的500内部服务器错误
我看了你的请求跟踪日志,一眼就发现了核心问题——这是协议与端口不匹配导致的TLS握手失败,直接触发了500错误。从日志里的forward-request记录可以看到关键错误:
{"messages": ["The underlying connection was closed: An unexpected error occurred on a send.", "Error occured while calling backend service.", "The handshake failed due to an unexpected packet format."]}
对应的转发请求URL是:https://xxx.azurewebsites.net:80/Tests——这里的矛盾很明显:HTTPS协议默认使用443端口,而你却指定了HTTP协议的80端口,强行用HTTPS连接80端口必然会导致TLS握手失败。
下面是具体的解决方案步骤:
1. 修正API Management的后端服务配置
- 登录Azure门户,打开你的API Management实例
- 找到你发布的API,进入它的设置页面
- 定位到后端配置区域,修改后端服务的URL:
- 如果你的Web App开启了HTTPS(生产环境推荐),直接使用
https://xxx.azurewebsites.net(无需显式指定端口,默认会用443) - 如果你的Web App确实使用80端口(不推荐生产环境),则把URL改为
http://xxx.azurewebsites.net:80
- 如果你的Web App开启了HTTPS(生产环境推荐),直接使用
- 保存配置后,重新测试API请求
2. 验证Web App的HTTPS与数据库配置
- 进入你的Azure Web App实例,打开配置 -> 常规设置,确认HTTPS only选项是否开启(生产环境建议开启):如果开启,确保后端服务使用HTTPS协议;如果关闭,要保证协议和端口严格匹配
- 检查Web App的应用程序设置里的数据库连接字符串是否正确,同时确认Azure SQL数据库的防火墙规则允许Web App访问(可以设置"允许Azure服务和资源访问此服务器")
3. 开启详细日志排查潜在问题
如果修正端口后仍有问题,可以开启Web App的详细日志:
- 进入Web App的监控 -> 日志流
- 实时查看服务器端的错误日志,确认是否存在数据库连接失败、权限不足等其他隐藏问题
内容的提问来源于stack exchange,提问作者SaibNZ




