对于AWS Lambda和ALB,swagger-ui-bundle.js过大

pieyvz9o  于 2023-02-22  发布在  其他
关注(0)|答案(2)|浏览(240)

已更新至.NET Core 3.1和最新版本的Swashbuckle,但发现swagger UI无法正常工作。swagger-ui-bundle.js无法加载502。已将此问题归结为AWS ALB错误,称响应太大。针对Lambda的ALB将响应限制为1 MB。已确认swagger-ui-bundle.js几乎为1 MB(技术上为995 KB)。
有没有办法减小swagger-ui-bundle.js的大小或者用其他方法引用它(可能是通过CDN)?
我使用的是Swashbuckle.AspNetCore5.5.1Nuget软件包和.NET核心3.1。

bkhjykvo

bkhjykvo1#

这应该可以解决以下问题:

app.UseSwaggerUI(c => {
  c.InjectJavascript("https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.1.3/swagger-ui-bundle.js", "text/javascript");
  c.SwaggerEndpoint($"/swagger/{_swaggerVersion}/swagger.json", _appSettings.ApiName);
});
ipakzgxi

ipakzgxi2#

我被这个问题困扰得很厉害,它发生得太突然了,我无法测试我的API端点,不知何故,当Swagger页面加载到客户端页面时,它没有从swagger-ui中获取必要的包。

    • 解决方案**

app.UseSwaggerUI()方法中手动注入脚本和样式对我很有效:

string myApiVersion = "v1";
string myAppName = "CareMatchPro";
string swaggerVersion = "4.15.5";

builder.Services.AddSwaggerGen(c =>
....

var app = builder.Build();
app.UseSwagger();
....

string pkgUrl = "https://unpkg.com/swagger-ui-dist@";
app.UseSwaggerUI(c => {
    c.HeadContent = 
        $"<link rel=\"stylesheet\" type=\"text/css\" " +
        $"href=\"{pkgUrl}{swaggerVersion}/swagger-ui.css\" />";
    c.InjectStylesheet($"{pkgUrl}{swaggerVersion}/swagger-ui.css", "text/css");
    c.InjectJavascript($"{pkgUrl}{swaggerVersion}/swagger-ui-standalone-preset.js", "text/javascript");
    c.InjectJavascript($"{pkgUrl}{swaggerVersion}/swagger-ui-bundle.js", "text/javascript");
    c.SwaggerEndpoint($"/swagger/{myApiVersion}/swagger.json", myAppName);
});

我希望这能帮助大家避免浪费时间--弥补我浪费的时间......:)

相关问题