[英]ASP.NET Core 3.1 AWS Lambda Swagger definition not working when deployed
在 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
定义似乎一切正常。
Deploying the service to AWS Lambda as ASP.NET Core REST API and navigating to the URL ( https://DNS_URL/API_PREFIX/swagger/ui
resolved to https://DNS_URL/API_PREFIX/swagger/ui/index.html
)it shows the below加载 JSON 定义时出错。
有趣的部分是,如果您导航到 JSON 定义路由( https://DNS_URL/API_PREFIX/swagger/v1/swagger.json
定义)它显示
您在 lambda 上发布的 API 的主要 URL 是https://DNS_URL/API_PREFIX/
Swagger UI needs to fetch the swagger.json file in order for it to work, and for your localhost it is working correctly since https://localhost:5001/swagger/v1/swagger.json
is a valid endpoint
(*这里没有前缀)
并且部署到 lambda 的版本正在尝试获取此swagger.json
文件
https://DNS_URL/swagger/v1/swagger.json
- 没有你的API_PREFIX
,因此它返回 404, not found 并且 Z5DB89E7472F81A4EA6B7A73F7C76 显示错误消息。
您可能会应用的快速修复,我认为它会起作用:
app.UseSwaggerUI(c =>
{
c.RoutePrefix = "swagger/ui";
c.SwaggerEndpoint($"{env.IsDevelopment() ? "" : API_PREFIX}/swagger/{SwaggerDocumentVersionName}/swagger.json", SwaggerDocumentServiceName);
});
API_PREFIX
是一个以 '/' 开头的字符串
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.