【问题标题】:API Gateway using OCELOT -- ERROR - Unable to start Ocelot使用 OCELOT 的 API 网关 - 错误 - 无法启动 Ocelot
【发布时间】:2018-12-29 17:17:29
【问题描述】:

我是 API 网关的新手,请按照以下链接开始。

https://www.c-sharpcorner.com/article/building-api-gateway-using-ocelot-in-asp-net-core/

当我尝试运行应用程序时,它会在 Startup.cs 文件中的以下代码行中引发错误。

Startup.cs

public Startup(IHostingEnvironment env){
    var builder = new Microsoft.Extensions.Configuration.ConfigurationBuilder();
    builder.SetBasePath(env.ContentRootPath)
    .AddJsonFile("configuration.json", optional: false, reloadOnChange: true)
    .AddEnvironmentVariables();
    Configuration = builder.Build();
}

public IConfigurationRoot Configuration { get; }

public void ConfigureServices(IServiceCollection services){
    Action<ConfigurationBuilderCachePart> settings = (x) =>{
        x.WithMicrosoftLogging(log =>{
            log.AddConsole(LogLevel.Debug);
        }).WithDictionaryHandle();
    };
    //services.AddOcelot(Configuration, settings);
    services.AddOcelot(Configuration);
}

public async void Configure(IApplicationBuilder app, IHostingEnvironment env){
    await app.UseOcelot();  // Error in this line number
}
}

错误:

无法启动Ocelot,报错为:不使用服务发现时DownstreamHostAndPorts必须设置且不为空否则Ocelot找不到你的服务!,不使用服务发现时DownstreamHostAndPorts必须设置且不为空否则Ocelot找不到你的服务! ,不使用服务发现的时候DownstreamHostAndPorts一定要设置且不能为空否则Ocelot找不到你的服务!

configuration.json

{</br>
    "ReRoutes": [</br>
        {</br>
            "DownstreamPathTemplate": "/api/customers",
            "DownstreamScheme": "http",
            "DownstreamHost": "localhost",
            "DownstreamPort": 9001,
            "UpstreamPathTemplate": "/customers",
            "UpstreamHttpMethod": [ "Get" ]</br>
        },</br>
        {</br>
            "DownstreamPathTemplate": "/api/customers/{id}",
            "DownstreamScheme": "http",
            "DownstreamHost": "localhost",
            "DownstreamPort": 9001,
            "UpstreamPathTemplate": "/customers/{id}",
            "UpstreamHttpMethod": [ "Get" ]</br>
        },</br>
        {</br>
            "DownstreamPathTemplate": "/api/products",
            "DownstreamScheme": "http",
            "DownstreamPort": 9002,
            "DownstreamHost": "localhost",
            "UpstreamPathTemplate": "/api/products",
            "UpstreamHttpMethod": [ "Get" ]</br>
        }</br>
    ],</br>
    "GlobalConfiguration": {
        "RequestIdKey": "OcRequestId",
        "AdministrationPath": "/administration"
    }</br>
}</br></br>

【问题讨论】:

  • 我修正了问题的格式。 &lt;/br&gt; 不是必需的。而且错误更容易理解为引用或代码(我所做的)。

标签: api host gateway ocelot


【解决方案1】:

您似乎已更新到最新的 Ocelot 软件包,因此您的 configuration.json 文件不正确。请参考-http://ocelot.readthedocs.io/en/latest/features/routing.html

您需要将 DownStreamHost/Port 设置为:

"DownstreamHostAndPorts": [
      {
        "Host": "localhost",
        "Port": 9001
      }
    ],

【讨论】:

【解决方案2】:

我使用过 Ocelot 8.0.1,但该版本存在错误。升级到 8.0.2,现在可以正常使用了。

【讨论】:

猜你喜欢
  • 2020-10-20
  • 2022-01-24
  • 2019-09-30
  • 2021-12-11
  • 2022-01-18
  • 2020-11-07
  • 2021-02-25
  • 2020-12-16
  • 2021-05-09
相关资源
最近更新 更多