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

ASP.NET Core 9配置自定义HTTPS证书后--urls参数失效,自动绑定到https://[::]:443的问题排查

ASP.NET Core 9配置自定义HTTPS证书后--urls参数失效,自动绑定到https://[::]:443的问题排查

问题描述

我最近在ASP.NET Core 9项目里配置自定义HTTPS证书时遇到了个棘手的问题:明明通过--urls参数指定了服务要监听的地址https://my-service.local,但应用启动后却自动绑定到了https://[::]:443,完全忽略了我设置的URL。

我的HTTPS配置代码片段如下:

var certFilePath = "cert.pem";
var keyFilePath = "key.pem";
var httpsCert = X509Certificate2.CreateFromPemFile(certFilePath, keyFilePath);

builder.WebHost.ConfigureKestrel(serverOptions => {
    serverOptions.ConfigureHttpsDefaults(options => {
        options.ServerCertificate = httpsCert;
    });
});

完整的Program.cs代码是这样的:

using System.Security.Cryptography.X509Certificates;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMvc();

var certFilePath = "cert.pem";
var keyFilePath = "key.pem";
var httpsCert = X509Certificate2.CreateFromPemFile(certFilePath, keyFilePath);

builder.WebHost.ConfigureKestrel(serverOptions => {
    serverOptions.ConfigureHttpsDefaults(options => {
        options.ServerCertificate = httpsCert;
    });
});

var app = builder.Build();
app.UseRouting();
app.MapControllers();
app.UseStaticFiles();
app.Run();

启动命令我用的是:

MyService.exe --urls=https://my-service.local

结果日志里显示的监听地址完全不是我指定的:

info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://[::]:443

我本来只想让服务在本地主机地址范围内可用,这情况完全不符合预期。

问题原因与解决方案

折腾了好一阵终于搞明白问题所在:当使用自定义HTTPS证书时,--urls参数里不能直接用hosts文件中配置的域名,必须指定具体的IP地址。

比如把启动命令改成下面这样就正常了:

MyService.exe --urls=https://127.0.0.1:443

如果想监听所有本地IP,也可以用:

MyService.exe --urls=https://localhost:443

这样配置后,应用就会乖乖监听指定的地址,不会再自动跳到https://[::]:443了。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 07:39:33