.NET Core API HTTP运行正常 启用SSL后无法加载启动文件排查
.NET Core API 启用SSL后无法启动问题排查
问题现象
HTTP协议下运行正常,勾选启用SSL后程序无法加载Program.cs或Startup.cs文件,访问HTTPS地址报ERR_CONNECTION_RESET错误,请求仅返回provisional headers。
相关配置
launchSettings.json
{ "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:5001/", "sslPort": 45150 } }, "profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "Bullies.API": { "commandName": "Project", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, "applicationUrl": "https://localhost:45150;http://localhost:5001" } } }
Program.cs
public class Program { public static void Main(string[] args) { Log.Logger = new LoggerConfiguration() .Enrich.FromLogContext() .WriteTo.Console() .CreateLogger(); try { Log.Information("Starting up"); CreateHostBuilder(args).Build().Run(); } catch (Exception ex) { Log.Fatal(ex, "Application start-up failed"); } finally { Log.CloseAndFlush(); } } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseSerilog() .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }) .ConfigureServices((hostContext, services) => { services.AddHostedService<Stuff>(); }); }
已执行操作
- 多次以管理员模式重启VS 2019
- 执行
dotnet dev-certs https --clean清理所有本地开发证书 - 执行
dotnet dev-certs https --trust重新生成并信任证书
推荐排查点
- 检查IIS Express配置文件:打开解决方案根目录下
.vs/[项目名]/config/applicationhost.config,确认45150端口的HTTPS绑定配置正确,关联证书有效 - 排查端口占用:执行
netstat -ano | findstr "45150"命令,确认45150端口未被其他进程占用,若存在占用可更换sslPort后重试 - 校验证书状态:打开证书管理器
certmgr.msc,检查当前用户个人存储和受信任根存储中的localhost证书是否有效、未过期 - 查看启动日志:检查VS调试输出窗口的启动日志,定位是否是服务注册、中间件加载环节的异常导致启动失败
- 切换启动模式:将启动配置切换为项目自托管模式(即Bullies.API profile),测试HTTPS访问是否正常,排除IIS Express配置问题
最终解决方案
该问题由IIS Express自签名证书异常导致,按以下步骤重新生成证书即可解决:
- 关闭所有IIS Express进程和Visual Studio
- 按Win+R输入
certmgr.msc打开证书管理器 - 依次进入「当前用户-个人-证书」,删除所有颁发给localhost、友好名称包含IIS Express的证书
- 依次进入「当前用户-受信任的根证书颁发机构-证书」,删除所有符合上述条件的证书
- 重启Visual Studio并打开项目,重新勾选启用SSL,按提示信任VS自动生成的新证书即可
内容的提问来源于stack exchange,提问作者GPGVM
相关产品推荐
相关产品推荐

