swagger 在program.cs中使用选项模式

9rbhqvlz  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(111)

我在我的应用程序中使用选项模式,从我的appsettings.json文件中阅读属性,并在整个应用程序中的类中使用它们。
然而,我有一个案例,我需要在我的program.cs文件本身中使用这些属性。下面的代码不起作用,因为我无法在program.cs文件中注入配置的示例。代码显示了我希望发生的事情...有没有更好的方法来做到这一点,并仍然留在期权模式?

builder.Services.Configure<SwaggerConfig>(builder.Configuration.GetSection("Swagger"));

var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI(s =>
{
   s.SwaggerEndpoint( SwaggerConfig.Url ,
       SwaggerConfig.Name);
    s.RoutePrefix = SwaggerConfig.RoutePrefix;
});

字符串

wgxvkvu9

wgxvkvu91#

您可以在代码中访问IServiceProvider。您可以通过app.Services.GetRequiredService<IOptions<SwaggerConfig>>().Value获得所需的配置。
问题是,一旦调用builder.Build(),DI容器也将被构建。

zyfwsgd6

zyfwsgd62#

您可以获取该部分并将其Map到设置类,如下所示:

var swaggerConfig = builder.Configuration.GetSection("Swagger")
    .Get<SwaggerConfig>();

var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI(s =>
{
   s.SwaggerEndpoint( swaggerConfig.Url,
       swaggerConfig.Name);
    s.RoutePrefix = swaggerConfig.RoutePrefix;
});

字符串

相关问题