我在带有醒目的UI的ASP.Net Core 3.1中使用swashbuckle。当我单击模型时,整个网页崩溃/冻结。我使用了大量(大约100个)Entity Framework Core实体(JSON 7000行)。
我切换到Nswag看看是否会更好。没有更多的崩溃,但仍然很慢(单击模型时需要10秒,方法上需要20秒)
我应该制造DTO还是解决我的问题?
我也尝试将其添加到我的启动中,但这完全没有帮助。
services.AddControllers().AddNewtonsoftJson(x =>
{
x.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});
从您所报告的内容来看,您的swashbuckle使用的是旧版本的swagger-ui,如果它们具有相同版本的swagger-ui,则与Nswag和swashbuckle的区别应该不大。
但是这个问题已经在项目中进行了讨论,完全扩展后的复杂嵌套模型非常庞大,这是我前一段时间收集的一些数据:https://github.com/swagger-api/swagger-ui/issues/4411#issuecomment-380168870
| Schema | SchemaSize | ExampleSize | ModelSize |
|------------------------------------------------------------|------------|-------------|------------|
| http://swagger-net-test.azurewebsites.net/api/NestedSwag/2 | 1,368 | 10,578 | 262,519 |
| http://swagger-net-test.azurewebsites.net/api/NestedSwag/3 | 1,662 | 59,703 | 1,321,999 |
| http://swagger-net-test.azurewebsites.net/api/NestedSwag/4 | 1,956 | 332,828 | 6,640,079 |
| http://swagger-net-test.azurewebsites.net/api/NestedSwag/5 | 2,250 | 1,835,953 | 33,305,772 |
如您所见,在浏览器中扩展模型可能是一项昂贵的任务