ASP.NET Core 7.0:如何在Builder配置中设置Kestrel的applicationUrl
在ASP.NET Core 7.0 Windows服务中配置applicationUrl
你有两种常用方式可以在Builder配置里直接设置监听地址和端口,这两种都完全适用于Windows服务场景:
方法一:直接使用UseUrls(最简便)
这个方法和你在launchSettings.json里设置applicationUrl的逻辑完全一致,直接指定要监听的地址即可,多个地址用逗号分隔:
var builder = WebApplication.CreateBuilder(args); // 添加这一行设置监听地址和端口 builder.WebHost.UseUrls("http://127.0.0.1:5000"); builder.Host.UseWindowsService(options => { options.ServiceName = "My Server"; }).ConfigureServices(services => { services.AddHostedService<WindowsBackgroundService>(); }); // ...后续启动代码
如果需要监听多个端点,比如同时监听本地回环和所有网卡的端口:
builder.WebHost.UseUrls("http://127.0.0.1:5000", "http://0.0.0.0:5001");
方法二:通过ConfigureKestrel配置(更灵活)
如果需要更精细的控制(比如配置HTTPS证书、限制连接数等),可以用微软文档提到的ConfigureKestrel方式,直接指定监听端口:
var builder = WebApplication.CreateBuilder(args); builder.WebHost.ConfigureKestrel(serverOptions => { // 监听本地回环的5000端口(对应http://127.0.0.1:5000) serverOptions.ListenLocalhost(5000); // 可选:如果需要监听所有网卡的端口,用下面的 // serverOptions.ListenAnyIP(5000); // 可选:配置HTTPS端点 // serverOptions.ListenLocalhost(5001, listenOptions => // { // listenOptions.UseHttps("your-cert.pfx", "cert-password"); // }); }); builder.Host.UseWindowsService(options => { options.ServiceName = "My Server"; }).ConfigureServices(services => { services.AddHostedService<WindowsBackgroundService>(); }); // ...后续启动代码
补充说明
launchSettings.json里的配置仅在本地开发调试时生效,部署为Windows服务后不会读取该文件,所以把配置移到代码里是正确的做法。- 两种方法都兼容Windows服务场景,
WebHost是WebApplicationBuilder的核心组成部分,不管程序以控制台还是Windows服务模式运行,这些配置都会生效。
内容的提问来源于stack exchange,提问作者kofifus
相关产品推荐
相关产品推荐

