在.NET Core 6.0中,你可以使用自定义 Middleware 来限制 Swagger/index.html 的访问,当用户进入到Swagger/index.html让系统提示404

发布时间 2023-04-14 12:06:56作者: KysonDu
  1. 创建一个自定义 Middleware 类,例如 SwaggerNotFoundMiddleware
    public class SwaggerNotFoundMiddleware
    {
        private readonly RequestDelegate _next;
    
        public SwaggerNotFoundMiddleware(RequestDelegate next)
        {
            _next = next;
        }
    
        public async Task Invoke(HttpContext context)
        {
            // 判断请求路径是否为 Swagger/index.html
            if (context.Request.Path.Value.Contains("/swagger/index.html"))
            {
                // 返回 404 错误页面
                context.Response.StatusCode = 404;
                await context.Response.WriteAsync("Not Found");
                return;
            }
    
            // 调用下一个 Middleware 或处理程序
            await _next.Invoke(context);
        }
    }
  2. Startup.cs 文件的 Configure 方法中,将自定义 Middleware 注册到应用程序的请求处理管道中,放在 Swagger Middleware 之前:
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // 其他 Middleware
    
        // 注册 Swagger Middleware
        app.UseSwagger();
        app.UseSwaggerUI(c => {
            // Swagger UI 配置
        });
    
        // 注册自定义 Middleware,放在 Swagger Middleware 之前
        app.UseMiddleware<SwaggerNotFoundMiddleware>();
    
        // 其他 Middleware
    }