如何从配置文件设置swagger配置属性
我正在使用Azure API管理来托管三个版本的API—开发、质量保证和阶段。这些基本上是api的三种不同的构建配置,所以当导入到APIM时,“MyAPI开发”、“MyAPI质量保证”、“MyAPI阶段” 我正在使用招摇过市的文件。当我触发Terraform中的修订以构建/重新创建API定义时,我得到错误:如何从配置文件设置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
"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"]);
}