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

如何为以Windows服务托管的ASP.NET Core应用配置负载均衡

ASP.NET Core Windows服务绑定通用地址实现DNS负载均衡配置方案

1. 调整应用监听配置(两种方案二选一即可)

方案A:通过配置文件设置(无需修改代码,推荐)

在应用的appsettings.json中添加Kestrel节点配置,让服务监听服务器所有可用IP的对应端口,不要绑定固定IP:

{
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://0.0.0.0:80"
      },
      // 如需HTTPS则保留下方配置,替换证书信息即可
      "Https": {
        "Url": "https://0.0.0.0:443",
        "Certificate": {
          "Path": "你的域名证书.pfx",
          "Password": "证书密码"
        }
      }
    }
  }
}

方案B:通过代码配置

在Program.cs中添加Kestrel监听逻辑:

var builder = WebApplication.CreateBuilder(args);

// 配置Kestrel监听所有IP的指定端口
builder.WebHost.ConfigureKestrel(opt =>
{
    // 监听HTTP 80端口
    opt.ListenAnyIP(80);
    // 监听HTTPS 443端口
    // opt.ListenAnyIP(443, o => o.UseHttps("你的域名证书.pfx", "证书密码"));
});

// 余下原有服务注册、中间件配置逻辑保持不变
var app = builder.Build();
// ...
app.Run();

2. 重新发布并安装Windows服务

将修改后的应用重新发布到两台服务器,执行服务安装命令时如果指定了--urls参数,也要对应修改为监听所有IP的格式:
sc create 你的服务名称 binPath= "你的应用程序路径\App.exe --urls http://0.0.0.0:80" start= auto

注意:Windows系统sc命令中binPath=后必须保留一个空格,否则命令执行失败。

服务启动后可以执行netstat -ano | findstr :你的端口号验证监听地址是否为0.0.0.0:端口,确认配置生效。

3. DNS负载均衡配置

在你的DNS解析服务商/自建DNS服务器上,给需要统一访问的域名添加两条A记录,分别指向两台服务器的IP地址,可将TTL设置为300秒方便后续调整。

常见注意事项

  • 两台服务器都需要部署同一张对应域名的HTTPS证书,避免访问时出现证书不受信任的错误。
  • 两台服务器的防火墙都要放行对应端口的入站访问规则。
  • 如果应用有会话状态,建议将状态存储到分布式缓存(如Redis)中,或在DNS层配置会话粘性,避免跨服务器访问时状态丢失。
  • 可以通过两台服务器的访问日志验证请求是否均匀分发,确认负载均衡生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:30:03