.Net 6已经删除了启动类,我无法了解如何在新的.Net 6结构中配置Ocelot。我发现了两种方法
using Ocelot.DependencyInjection;
using Ocelot.Middleware;
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddOcelot()// 1.ocelot.json goes where?
// Add services to the container.
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddOcelot(); // 2.what is the use of this
请告诉我
在项目中添加名为ocelot.json
的json文件。
然后在Program.cs
:中这样配置
IConfiguration configuration = new ConfigurationBuilder()
.AddJsonFile("ocelot.json")
.Build();
var builder = WebApplication.CreateBuilder(args);
//.....
builder.Services.AddOcelot(configuration);
var app = builder.Build();
//........
app.UseOcelot();
//......
您可能已经解决了这个问题,所以这是为所有其他寻求解决方案的开发人员准备的。以下是添加Ocelot配置的两种方法。
- 在名为
ocelot.json
的项目中添加一个新的JSON file
,并在其中添加ocelot的配置 - 文件
ocelot.json
必须在Program.cs
中注册,以便Ocelot加载API网关的配置
以下是如何注册Ocelot配置的两个示例。
1.添加Ocelot配置而不进行环境检查
using Ocelot.DependencyInjection;
using Ocelot.Middleware;
var builder = WebApplication.CreateBuilder(args);
IConfiguration configuration = new ConfigurationBuilder()
.AddJsonFile("ocelot.json")
.Build();
builder.Services.AddOcelot(configuration);
var app = builder.Build();
await app.UseOcelot();
app.MapGet("/", () => "Hello World!");
app.Run();
如您所见,我们使用.ConfigurationBuilder()
从ocelot.json加载配置。然后,在注册Ocelot的中间件之前,我们将配置解析为将其添加到服务容器的方法。
2.为当前环境添加Ocelot配置
我倾向于有多个环境用于生产、测试、本地开发等……我们可以通过检查运行的环境来完成,而不是用Ocelot的特定配置文件重新编写/更新配置加载程序。
using Ocelot.DependencyInjection;
using Ocelot.Middleware;
var builder = WebApplication.CreateBuilder(args);
IConfiguration configuration = new ConfigurationBuilder()
.AddJsonFile($"ocelot.{builder.Environment.EnvironmentName}.json", true, true)
.Build();
builder.Services.AddOcelot(configuration);
var app = builder.Build();
await app.UseOcelot();
app.MapGet("/", () => "Hello World!");
app.Run();
在上面的代码中,我们使用IHostEnvironment
来获取当前环境名称。然后,我们可以使用字符串插值将环境名称动态插入到ocelot配置文件的字符串中。
为了实现这一点,您必须为每个环境添加一个新的配置文件,如下所示:
ocelot.json
├─ ocelot.Development.json
├─ ocelot.Local.json
├─ ocelot.Test.json
您需要直接从程序中声明。如果您在bulder.configuration中添加Ocelot json文件,则在服务中添加Ocellot引用,最后启动intance应用程序。Ocelot((.wait((;
这里有一个例子,希望它能帮助
using Ocelot.DependencyInjection;
using Ocelot.Middleware;
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddJsonFile("ocelot.json");
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddOcelot();
var app = builder.Build();
//if (app.Environment.IsDevelopment())
//{
app.UseSwagger();
app.UseSwaggerUI();
//}
app.UseHttpsRedirection();
app.UseOcelot().Wait();
app.UseAuthorization();
app.MapControllers();
app.Run();