【发布时间】:2020-08-06 11:11:55
【问题描述】:
在 Startup.cs 中配置以下代码
变量。
private const string SwaggerDocumentVersionName = "v1";
private static string SwaggerDocumentServiceName => $"Users API({SwaggerDocumentVersionName})";
ConfigureServices 方法。
services.AddSwaggerGen(c =>
{
c.SwaggerDoc(
SwaggerDocumentVersionName,
new OpenApiInfo
{
Title = SwaggerDocumentServiceName,
Version = $"{SwaggerDocumentVersionName}"
});
});
Configure 方法。
app.UseSwagger(c =>
{
c.RouteTemplate = "/swagger/{documentName}/swagger.json";
});
app.UseSwaggerUI(c =>
{
c.RoutePrefix = "swagger/ui";
c.SwaggerEndpoint($"/swagger/{SwaggerDocumentVersionName}/swagger.json", SwaggerDocumentServiceName);
});
在本地运行时(https://localhost:5001/swagger/ui 解析为 https://localhost:5001/swagger/ui/index.html)定义正确加载,一切看起来都很好。
将服务作为 ASP.NET Core REST API 部署到 AWS Lambda 并导航到 URL(https://DNS_URL/API_PREFIX/swagger/ui 解析为 https://DNS_URL/API_PREFIX/swagger/ui/index.html)显示以下加载 JSON 定义的错误。
有趣的是,如果您导航到 JSON 定义路由 (https://DNS_URL/API_PREFIX/swagger/v1/swagger.json),它会显示定义。
【问题讨论】:
-
您托管在 Lambda 上的 swagger 最有可能调用
https://DNS_URL/swagger/v1/swagger.json(不带前缀) - 返回 404,因此它没有加载,您必须为production构建配置 swagger 前缀 -
@kebek 不确定我明白这意味着什么,您是否看到配置错误?
标签: c# asp.net-core swagger