API网关Ocelot.Net核心6.1设置



.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配置的两种方法。

  1. 在名为ocelot.json的项目中添加一个新的JSON file,并在其中添加ocelot的配置
  2. 文件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();

相关内容

  • 没有找到相关文章

最新更新