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

.NET 6 集成 Ocelot 18 部署至 IIS 后访问网关URL返回404

.NET 6 + Ocelot 18 IIS部署404问题解决指南

问题根源

IIS作为反向代理时,Ocelot默认会从应用内部上下文读取端口,而这个端口和网关对外暴露的端口不一致,导致转发URL错误拼接了内部端口。另外,.NET 6默认未配置ForwardedHeaders,Ocelot无法识别真实的外部请求地址,进一步加剧了这个问题。

修复步骤

1. 给网关添加ForwardedHeaders配置

在Program.cs中先配置转发头,让应用能正确获取IIS传递的真实请求信息,注意要放在Ocelot中间件之前:

var builder = WebApplication.CreateBuilder(args);

// 配置转发头,识别IIS传递的真实地址
builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders = Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedFor | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedProto | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedHost;
    options.KnownProxies.Add(IPAddress.Parse("127.0.0.1"));
});

// 注册Ocelot服务
builder.Services.AddOcelot();

var app = builder.Build();

// 先启用转发头
app.UseForwardedHeaders();

// 再启用Ocelot
await app.UseOcelot();

app.Run();

2. 修正Ocelot配置文件

打开ocelot.json,确保下游服务的配置指向Player微服务的真实IIS地址,不要随意添加端口:

{
  "Routes": [
    {
      "UpstreamPathTemplate": "/player/{everything}",
      "UpstreamHttpMethod": ["Get", "Post"],
      "DownstreamPathTemplate": "/{everything}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "你的Player微服务域名/机器名",
          "Port": 80 // 使用默认80端口的话,直接删除这个字段也可以
        }
      ]
    }
  ],
  "GlobalConfiguration": {
    "BaseUrl": "http://你的网关对外访问域名/机器名" // 填写网关真实对外地址,不要加端口
  }
}

3. 检查IIS的关键配置

  • 确认网关和Player微服务的IIS站点绑定的域名/IP、端口正确,比如默认用80端口就不要随意修改。
  • 开启IIS的**ARR(Application Request Routing)**模块,没有这个模块的话,网关无法转发请求到其他站点。
  • 检查站点的URL重写规则,避免有冲突的规则篡改请求路径。

4. 日志排查定位

在appsettings.json中把日志级别设为Debug,查看Ocelot的转发日志:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "Ocelot": "Debug"
    }
  }
}

启动服务后查看日志里的DownstreamUrl是否正确,如果仍带错误端口,再核对GlobalConfiguration里的BaseUrl是否和网关对外访问地址完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:20:48