簡體   English   中英

ASP.NET 核心 3.1 AWS Lambda Swagger 定義在部署時不起作用

[英]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 定義時出錯。

Swagger 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM