You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
using EntrustSettle.Common ;
using Microsoft.AspNetCore.Builder ;
using NLog ;
using Swashbuckle.AspNetCore.SwaggerUI ;
using System ;
using System.IO ;
namespace EntrustSettle.Extensions.Middlewares
{
/// <summary>
/// Swagger中间件
/// </summary>
public static class SwaggerMiddleware
{
public static void UseSwaggerMiddle ( this IApplicationBuilder app , Func < Stream > streamHtml )
{
if ( app = = null ) throw new ArgumentNullException ( nameof ( app ) ) ;
app . UseSwagger ( ) ;
app . UseSwaggerUI ( c = >
{
SwaggerSetup . ApiInfos . ForEach ( x = >
{
c . SwaggerEndpoint ( $"/swagger/{x.UrlPrefix}/swagger.json" , x . Name ) ;
} ) ;
// 将swagger首页, 设置成我们自定义的页面, 记得这个字符串的写法: {项目名.swagger_index.html}
if ( streamHtml . Invoke ( ) = = null )
{
var msg = "swagger_index.html的属性, 必须设置为嵌入的资源" ;
LogManager . GetCurrentClassLogger ( ) . Error ( msg ) ;
throw new Exception ( msg ) ;
}
c . IndexStream = streamHtml ;
c . DocExpansion ( DocExpansion . None ) ; //->界面打开时自动折叠
if ( Permissions . IsUseIds4 )
{
c . OAuthClientId ( "blogadminjs" ) ;
}
//增加令牌本地缓存 reload不会丢失
c . ConfigObject . AdditionalItems . Add ( "persistAuthorization" , "true" ) ;
// 路径配置, 设置为空, 表示直接在根域名( localhost:8001) 访问该文件,注意localhost:8001/swagger是访问不到的, 去launchSettings.json把launchUrl去掉, 如果你想换一个路径, 直接写名字即可, 比如直接写c.RoutePrefix = "doc";
c . RoutePrefix = "" ;
} ) ;
}
}
}