使用OCELOT的API网关-错误-无法启动Ocelot

时间:2018-07-21 17:59:11

标签: api host gateway ocelot

我是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>

2 个答案:

答案 0 :(得分:4)

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

您需要将DownStreamHost / Port设置为:

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

答案 1 :(得分:0)

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