我正在设置Swagger来记录我的API。
我已经使用规范json的相对路径设置了SwaggerEndpoint
,如下所示:
当我在本地调试时,一切都解决得很好。但我的网站只是作为http://localhost:44348/index.html
运行。
当我部署到虚拟路径上的IIS时,它会分崩离析:
/imaging4castapi_UAT/
作为路径的一部分这是我尝试过的:
RoutePrefix
覆盖。但这并没有解决。"~/swagger/..."
这样的应用程序路径,但是由服务器在Razor页面和css等视图元素上进行翻译,并且在Startup
中不起作用。我很难理解这是客户端安装问题还是与我的网站在IIS上托管的方式有关。
思考?
尝试使用相对路径:
setupAction.SwaggerEndpoint("../swagger/Imaging4CastApiSpecification/swagger.json", "4Cast API");
请注意以下问题的答案和解释:SwashBuckle
这是我的一次PRD应用程序的Swagger配置。希望能帮助到你
public static IServiceCollection AddSwaggerConfig(this IServiceCollection services, IHostingEnvironment env,
string title, string version)
=> services.AddSwaggerGen(c =>
{
//Ensure XML Document File of project is checked for both Debug and Release mode
c.IncludeXmlComments("Your App.xml");
//Display Enum name
c.DescribeAllEnumsAsStrings();
//c.OperationFilter<AddRequiredHeaderParameter>();
//Authentication for Bearer
c.AddSecurityDefinition("Bearer",
new ApiKeyScheme
{
In = "header",
Description = "Please enter JWT with Bearer into field",
Name = "Authorization",
Type = "apiKey"
});
c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>>
{
{"Bearer", Enumerable.Empty<string>()}
});
c.SwaggerDoc(version, new Info
{
Title = title,
Version = version,
Description = "",
Contact = new Contact
{
Email = "[email protected]",
Name = ""
}
});
});
启动文件
app.
//Swagger
.UseSwagger()
.UseSwaggerUI(c =>
{
c.SwaggerEndpoint($"./{_version}/swagger.json", Title);
});
该版本是Config文件中的app变量,将由CI / CD过滤
默认情况下,Swagger不支持虚拟目录。尝试将其添加到您的Startup.cs
app.UseSwagger(c =>
{
c.RouteTemplate = "virtual_path/{documentName}/swagger.json";
});
app.UseSwaggerUI(c =>
{
//Include virtual directory
c.RoutePrefix = "virtual_path";// add your virtual path here.
c.SwaggerEndpoint("v1/swagger.json", "Api v1");
});