Qualcuno ha postato la soluzione su github così ho intenzione di incollare qui. Tutti i crediti vanno a lui. https://github.com/domaindrivendev/Swashbuckle/issues/153#issuecomment-213342771
prima creare una classe Attribute
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class HideInDocsAttribute:Attribute
{
}
quindi creare una classe di filtro documento
public class HideInDocsFilter:IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
{
foreach (var apiDescription in apiExplorer.ApiDescriptions)
{
if (!apiDescription.ActionDescriptor.ControllerDescriptor.GetCustomAttributes<HideInDocsAttribute>().Any() && !apiDescription.ActionDescriptor.GetCustomAttributes<HideInDocsAttribute>().Any()) continue;
var route = "/" + apiDescription.Route.RouteTemplate.TrimEnd('/');
swaggerDoc.paths.Remove(route);
}
}
}
Poi in classe Swagger Config, aggiungere che il filtro documento
public class SwaggerConfig
{
public static void Register(HttpConfiguration config)
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
config
.EnableSwagger(c =>
{
...
c.DocumentFilter<HideInDocsFilter>();
...
})
.EnableSwaggerUi(c =>
{
...
});
}
}
Ultimo passo è per aggiungere l'attributo [HideInDocsAttribute] sul controller o sul metodo y Non vuoi che Swashbuckle generi documentazione.
fonte
2017-02-14 20:08:40
Chi ha votato questa domanda e perché? Puoi per favore avere la decenza di spiegare il ragionamento. –