我有一个 ASP.NET WebAPI 项目,我试图用 Swagger UI 替换旧的 XmlDocumentationProvider 页面。我正在使用webAPI 5.3.1 的 swashbuckle swagger努吉特包。
我能够导航到 localhost/MyApp/swagger,并且可以在 fiddler 中看到它调用 localhost/MyApp/swagger/docs/v1 来检索表示我的 API 的 JSON 字符串。调用成功,JSON约为240KB,且JSON有效。此时,chrome 选项卡会冻结大约 30 秒,然后崩溃并显示“哇咔咔”页面。控制台中没有错误。
尝试验证 api JSON这个在线验证器有效并表示规范/模式有效当且仅当我取消选中所有三个“遵循 ___ $refs”复选框。如果勾选其中任何一个框,大约需要 30 秒,然后该工具就会崩溃。
不幸的是,我无法将整个 webAPI 规范粘贴到某处,但我会说它适用于非常大且非常复杂的内部业务应用程序。我们的一些 DTO 具有循环引用(与 DTO 本身类型相同的属性),我怀疑这可能会导致问题,但如果没有任何日志记录或调试,我无法确定,并且有超过 1000 个 DTO 类,我不想将它们全部梳理一遍进行检查。
有没有办法为 swashbuckle(在服务器上)或 swagger UI(在客户端上)打开任何类型的日志记录或调试?有没有人遇到过浏览器崩溃的问题并知道是什么原因造成的?提前致谢。
我能够注释掉每个 API 控制器,加载 swagger 页面,然后重新打开它们,直到页面再次崩溃。一旦我弄清楚哪个控制器出了问题,我就对控制器中的所有端点重复该过程。
事实证明,我们非常古老的方法之一是将 ORM 实体作为主体参数(非常糟糕),这导致 swagger 尝试解析我们的整个 ORM 对象图并耗尽内存。更改此方法以接受 DTO 而不是数据层实体解决了问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)