我是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无法找到您的服务!
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>发布于 2018-07-27 07:32:48
我使用了Ocelot8.0.1,这个版本有一个错误。升级到8.0.2,现在工作正常。
发布于 2018-07-25 12:00:49
您似乎已经更新了最新的Ocelot包,因此您的configuration.json文件不正确。请参考- http://ocelot.readthedocs.io/en/latest/features/routing.html。
您需要将DownStreamHost/Port设置为:
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 9001
}
],https://stackoverflow.com/questions/51458714
复制相似问题