如何从配置文件设置swagger配置属性

如何从配置文件设置swagger配置属性,swagger,swagger-ui,swashbuckle,Swagger,Swagger Ui,Swashbuckle,我正在使用Azure API管理来托管三个版本的API—开发、质量保证和阶段。这些基本上是api的三种不同的构建配置,所以当导入到APIM时,“MyAPI开发”、“MyAPI质量保证”、“MyAPI阶段” 我正在使用招摇过市的文件。当我触发Terraform中的修订以构建/重新创建API定义时,我得到错误: "my-ApiM-dev" / Resource Group "rg-myApim"): apimanagement.APIClient#Create

我正在使用Azure API管理来托管三个版本的API—开发、质量保证和阶段。这些基本上是api的三种不同的构建配置,所以当导入到APIM时,“MyAPI开发”、“MyAPI质量保证”、“MyAPI阶段”

我正在使用招摇过市的文件。当我触发Terraform中的修订以构建/重新创建API定义时,我得到错误:

"my-ApiM-dev" / Resource Group "rg-myApim"): apimanagement.APIClient#CreateOrUpdate: Failure sending 
request: StatusCode=409 -- Original Error: Code="IdentifierAlreadyInUse" Message="Resource already exists." 
我99%确信这是由于
SwaggerConfig.cs
文件中的“title”造成的,它对于所有配置都是相同的值。因此,部署两个具有相同标题的API会引发错误

GlobalConfiguration.Configuration
  .EnableSwagger(c =>
    {
      c.SingleApiVersion("v1", "MyApiTitle");
    }
如何根据配置使标题唯一

我尝试在web.config value中为每个配置创建配置值,并引用配置文件中的键,但没有成功,SwaggerUi只在web.config文件中选择了默认值

web.dev.config:

<add key="BuildConfig" value="dev" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
另一种选择是编写脚本删除API,导入API并重命名标题,但我会这样做作为最后的手段


但是,我希望在项目代码中动态执行此操作。

我可以使用PowerShell实现此功能,请检查这是否对您有帮助

另外,检查您是否能够使用您的方法手动部署它

GlobalConfiguration.Configuration
    .EnableSwagger(c =>
    {
        c.SingleApiVersion("v1", "MyApiTitle-" + ConfigurationManager.AppSettings["BuildConfig"]);
    }