使用Iconfiguration对象中的值配置Swagger

时间:2019-04-20 14:04:18

标签: c# asp.net-core configuration swagger-ui

我正在尝试在startup.cs中配置swagger。如果我像下面的in ASP.NET Core : 2.2

那样给出其必需的值“ Hardcoded”
    services.AddSwaggerGen(c =>
    {
      c.SwaggerDoc("V1", new Info { Title = "MY.API", Version ="v1" });
    });

    app.UseSwagger();
    // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), 
    // specifying the Swagger JSON endpoint.
    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "MY.API V1");
    });

但是,如果我从asp.net核心提供的“ IConfiguration”对象中设置了所有上述硬编码值,则它将停止工作,

services.AddSwaggerGen(c =>
{
   c.SwaggerDoc(this.Configuration.GetSection("AppSetting") 
   ["APIName"], new Info { Title = "My.API", Version = "v1" });
}); 

操作系统:Windows 10 Pro

1 个答案:

答案 0 :(得分:0)

这应该是评论,但我没有足够的业力。

首先,请向我们展示您的appsettings.json。 第二次检查该行是否实际返回正确的值,而不是null或空字符串(只需将其放入本地var):

this.Configuration.GetSection("AppSetting")["APIName"]

编辑: 似乎名称字段区分大小写。确保还使用UseSwaggerUI中的config中的值:

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint($"/swagger/{this.Configuration.GetSection("AppSetting")["APIName"]}/swagger.json", "MY.API V1");
});