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

如何在应用发布包外配置Kestrel的HTTPS?

有两种主要方式可以通过dotnet run实现和你给出的appsettings.json等效的配置,不需要修改代码或依赖appsettings.json:

一、直接通过命令行参数传递配置

.NET的配置系统允许通过命令行参数直接覆盖Kestrel的配置项,格式是把JSON中的层级用冒号:分隔。对应你给出的配置,完整的dotnet run命令如下:

dotnet run --Kestrel:EndPoints:Http:Url "http://example.com:80" --Kestrel:EndPoints:Https:Url "https://example.com:443" --Kestrel:EndPoints:Https:Certificate:Subject "example.com" --Kestrel:EndPoints:Https:Certificate:Store "webhosting" --Kestrel:EndPoints:Https:Certificate:Location "LocalMachine"

如果只需要启用HTTP或HTTPS其中一个,去掉对应的参数即可——比如开发环境只需要HTTP的话,只传--Kestrel:EndPoints:Http:Url "http://localhost:5000"或者更简洁的--urls "http://localhost:5000"。

二、通过环境变量配置(适合持久化宿主环境配置)

如果不想每次运行都输入长命令,可以用环境变量来设置这些配置项,不同系统的环境变量命名规则略有差异:

  • Windows(CMD):把冒号:换成下划线_,比如 set Kestrel_EndPoints_Https_Certificate_Subject=example.com
  • Linux/macOS:把冒号:换成双下划线__,比如 export Kestrel__EndPoints__Https__Certificate__Subject=example.com

设置好所有需要的环境变量后,直接运行dotnet run即可自动读取这些配置。

补充说明

  • 命令行参数的优先级高于appsettings.json和环境变量,若同时存在会以命令行参数为准。
  • 开发环境不需要HTTPS时,完全可以不传递任何HTTPS相关参数,Kestrel会默认只启用HTTP端点(或用--urls指定HTTP地址)。
  • 使用证书存储方式时,要确保运行dotnet run的用户有访问对应证书存储的权限(比如LocalMachine存储需要管理员权限)。

内容的提问来源于stack exchange,提问作者BenderBoy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 01:01:12