404 尝试将上游路径路由到 Ocelot 中的下游路径 [英] 404 trying to route the Upstream path to downstream path in Ocelot

查看:50
本文介绍了404 尝试将上游路径路由到 Ocelot 中的下游路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在将传入的 http 请求转发到下游路径时遇到此警告/错误.

I am facing this warning/error while forwarding the incoming http request to the downstream path.

Ocelot.DownstreamRouteFinder.Middleware.DownstreamRouteFinderMiddleware:警告:requestId:80000025-0004-fd00-b63f-84710c7967bb,previousRequestId:没有先前的请求 id,消息:DownstreamRouteFinderMiddleware 设置管道错误.IDownstreamRouteFinder 返回错误代码:UnableToFindDownstreamRouteError 消息:无法匹配路由上游路径的配置:/getDepartment,动词:GET.

Ocelot.DownstreamRouteFinder.Middleware.DownstreamRouteFinderMiddleware: Warning: requestId: 80000025-0004-fd00-b63f-84710c7967bb, previousRequestId: no previous request id, message: DownstreamRouteFinderMiddleware setting pipeline errors. IDownstreamRouteFinder returned Error Code: UnableToFindDownstreamRouteError Message: Failed to match Route configuration for upstream path: /getDepartment, verb: GET.

程序.cs

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
       WebHost.CreateDefaultBuilder(args)
       .ConfigureAppConfiguration((host, config) =>
       {
           config.AddJsonFile("ocelot.json");
       })
    .UseStartup<Startup>();
}

Startup.cs

public IConfiguration Configuration { get; }

public Startup(IConfiguration configuration)
{
    Configuration = configuration;
}

// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
    services.AddOcelot(Configuration);
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public async void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    await app.UseOcelot();

    app.Run(async (context) =>
    {
        await context.Response.WriteAsync("Hello World!");
    });
}

豹猫.json

{
  "ReRoutes": [
    {
      "DownstreamPathTemplate": "api/department",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 44388
        }
      ],
      "UpstreamPathTemplate": "/getDepartment",
      "UpstreamHttpMethod": [
        "Get"
      ]
    }
  ],
  "GlobalConfiguration": {
    "BaseUrl": "http://localhost:5000"
  }
}

我在这方面收到错误 404.

I am getting Error 404 in this.

推荐答案

如果您使用的是最新版本 (16.0.0),请将 ocelot.json 中的ReRoutes"更改为Routes".

If you are using the latest version (16.0.0), change "ReRoutes" to "Routes" in your ocelot.json.

我遇到了同样的问题,然后遇到了这个拉取请求,解释说它已更改为与新的 Microsoft 反向代理项目 (YARP) 相匹配.他们的文档需要更新.https://github.com/ThreeMammals/Ocelot/pull/1239

I was having the same problem and then came across this pull request explaining it had been changed to match up with a new Microsoft reverse proxy project (YARP). Their documentation needs updating. https://github.com/ThreeMammals/Ocelot/pull/1239

这篇关于404 尝试将上游路径路由到 Ocelot 中的下游路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆