Swagger UI 有时不加载

Posted

技术标签:

【中文标题】Swagger UI 有时不加载【英文标题】:Swagger UI Not Loading Sometimes 【发布时间】:2021-09-01 16:47:52 【问题描述】:

我在我的 ASPNetCore 3.1 项目中使用最新版本的 Swagger,并在最新版本的 Chrome 上进行调试。当我尝试进入 swagger 页面时,它有时无法加载并且我看到一个空白页面。它看起来完全随机。刷新页面后就解决了。

我在控制台上看到了这些错误。

GET https://localhost:44389/swagger/swagger-ui-bundle.js net::ERR_HTTP2_PROTOCOL_ERROR

index.html:95 Uncaught ReferenceError: SwaggerUIBundle is not defined
    at window.onload (index.html:95)

错误中的文件是随机的。它有时是 js 文件,有时是 .css 文件。它会改变。

如果我在 IIS 上发布此项目并禁用 Http/2 支持,我永远不会遇到此错误。

为什么?

【问题讨论】:

检查此问答中的答案,看看它们是否有帮助:What's the net::ERR_HTTP2_PROTOCOL_ERROR about? @Helen 不幸的是我已经尝试了所有这些,没有任何修复:( 【参考方案1】:

您可以尝试以下方法:

1.检查你所有的控制器方法是否有[http]标签。如果它们都可以但仍然无法正常工作,请转到第 2 步

2.在你的配置函数中确保你有 app.UseStaticFiles();如果它仍然不起作用,请转到第 3 步

3.卸载并重新安装swagger。如果它不起作用,请转到第 4 步(仅限核心)

4.如果您正在使用 Core 安装 Microsoft.AspNetCore.StaticFiles 并在您的项目中引用它。

【讨论】:

不幸的是我已经尝试了所有这些,没有任何修复:( 请检查是否加载了swagger-ui-bundle.js。通常是服务器配置错误导致js文件加载不出来 我已经检查了所有内容。当我不断刷新 swagger-UI 页面时,它有时会毫无问题地加载,但有时它会在随机 .js 和 .css 文件上给出“net::ERR_HTTP2_PROTOCOL_ERROR”。奇怪的是,如果我从 IIS 设置中禁用 HTTP/2,为什么这个问题会消失? Edge/Firefox 浏览器可以用吗?这篇文章对你有帮助:***.com/questions/58215104/… 是的,它也在其他浏览器中发生。我找到的唯一解决方案是禁用 http/2 或卸载 KB5004476 Windows Update。也许这是一个关于操作系统的错误。【参考方案2】:

我遇到了同样的问题,SwaggerUIBundle is not defined,问题不在我正在开发的网络应用程序上,而是在我的网络上。切换到其他网络后问题已解决。

【讨论】:

以上是关于Swagger UI 有时不加载的主要内容,如果未能解决你的问题,请参考以下文章

Springfox swagger-ui.html无法推断基本URL - 由丢失的cookie引起

swagger-ui不显示问题定位

Spring Boot + Swagger + Swagger UI 和 @RequestBody 具有数据类型 String

在 Azure 的 ASP.NET Core 3.1 应用程序中获取 swagger-ui 返回 404

swagger-ui及swagger用法

Swagger-UI 和 Ktor 如何导入 swagger.json 或 .yaml 文件并启动 Swagger-UI?