【问题标题】:NSwag Post Build swagger.json generation failsNSwag Post Build swagger.json 生成失败
【发布时间】:2021-03-04 08:18:48
【问题描述】:

我正在使用我的 csproj 的一部分生成构建 swagger.json 的一部分。

<Target Name="NSwag" AfterTargets="Build">
        <Exec Command="$(NSwagExe_Net50) run nswagconfig.nswag /variables:Configuration=$(Configuration)" />
    </Target>

我遇到的问题是 API 在运行时正在从 Azure App Configuration 加载 Configuration 对象,就像我的 Program.cs 中这样:

if (!context.HostingEnvironment.IsDevelopment())
                {
                    config.AddAzureAppConfiguration(o =>
                    {
                        o.Connect(new Uri(builtConfig["AppConfig:Endpoint"]), new ManagedIdentityCredential())
                            .Select(KeyFilter.Any, LabelFilter.Null)
                            .Select(KeyFilter.Any, builtConfig["Environment"]);
                    });
                }

context.HostingEnvironment.IsDevelopment() 在构建时为 false,由于某种原因,nswagger 生成命令正在执行 if 语句,并使用 Azure App Configuration SDK,这是错误的,超出范围。

在这种场景下我有什么选择,既可以实现swagger生成,又不影响基于不同环境的Configuration对象加载?

注意:如果我将条件更改为 if (context.HostingEnvironment.IsDevelopment()) swagger.json 生成工作正常

【问题讨论】:

    标签: .net asp.net-core .net-core swagger-codegen nswag


    【解决方案1】:

    在您的nswag.json 文件中,将aspNetCoreEnvironment 属性设置为“开发”。

    NSwag 将在运行生成器之前将ASPNETCORE_ENVIRONMENT 环境变量设置为此值,这是context.HostingEnvironment 用来确定其运行位置的环境变量之一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-28
      • 2018-09-29
      • 2012-09-20
      • 2019-07-29
      • 2016-06-21
      • 2019-02-09
      • 1970-01-01
      • 2018-02-25
      相关资源
      最近更新 更多