.net core .Net Core 3.1删除Swagger UI上的架构

.net core .Net Core 3.1删除Swagger UI上的架构,.net-core,swagger,swagger-ui,.net Core,Swagger,Swagger Ui,我有.Net 3.1 Web Api,我想删除Swagger UI上的“模式”部分。 怎么做? 将自定义的IDocumentFilter实现添加到您的swagger配置中: services.AddSwaggerGen(options => options.DocumentFilter<RemoveSchemasFilter>()); services.AddSwaggerGen(options=>options.DocumentFilter()); 在RemoveSche

我有.Net 3.1 Web Api,我想删除Swagger UI上的“模式”部分。
怎么做?

将自定义的
IDocumentFilter
实现添加到您的swagger配置中:

services.AddSwaggerGen(options => options.DocumentFilter<RemoveSchemasFilter>());
services.AddSwaggerGen(options=>options.DocumentFilter());

RemoveSchemasFilter
Apply
方法中,您应该能够识别要删除的
OpenApiDocument
的元素,并相应地进行删除。

在多次打断我的头后,使用用户的建议“CoffeeCodeConverterImpl”,我制作了这样的类:

public class RemoveSchemasFilter : IDocumentFilter
{
    public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
    {
        
        IDictionary<string, OpenApiSchema> _remove = swaggerDoc.Components.Schemas;
        foreach (KeyValuePair<string, OpenApiSchema> _item in _remove)
        {
            swaggerDoc.Components.Schemas.Remove(_item.Key);
        }
    }
}
公共类RemoveSchemasFilter:IDocumentFilter
{
公共作废应用(OpenApiDocument swaggerDoc、DocumentFilterContext上下文)
{
IDictionary _remove=swaggerDoc.Components.Schemas;
foreach(KeyValuePair _项目在_移除中)
{
swaggerDoc.Components.Schemas.Remove(_item.Key);
}
}
}
实施:

 c.DocumentFilter<RemoveSchemasFilter>();
c.DocumentFilter();

在添加招摇过市用户界面时,只需添加以下行:

app.UseSwaggerUI(c => {
    c.DefaultModelsExpandDepth(-1);
});

不需要架构过滤器。经过几天的努力,我发现:

所有需要做的事情都在计划之中

app.UseSwaggerUI(options =>
{
    options.DefaultModelsExpandDepth(-1);
}

注意:它是默认模型,而不是默认模型。DIfference is DefaultModel是模型示例部分中模型的默认扩展深度,而DefaultModels是模型的扩展深度。

在您的Swagger UI选项中添加此属性
defaultModelsExpandDepth:-1
用于隐藏架构部分,如需更多参考,请参阅此项无效。请在您的问题中添加您的Swagger UI配置设置。@Herman您是如何解决此问题的?我使用了过滤器,但我有红色的错误,我甚至打开了一个新的主题,因为我想得到一个修复!我试过了,效果很好,但上面出现了错误。我甚至还为你提出的修复方案写了一篇帖子。你能帮忙吗?仅供参考。Net5也适用,谢谢。