ASP.Net Core 6中Swagger无法加载自定义CSS的问题排查
ASP.NET Core 6 Web API Swagger自定义CSS加载失败解决方法
核心问题
你将custom.css设为Embedded resource,但当前使用的UseStaticFiles()仅负责读取wwwroot目录下的静态资源,两者机制不匹配,导致Swagger无法定位到你的自定义样式文件。
两种修正方案
方案一:切换为静态文件模式(推荐,配置更简单)
- 将项目中的
swagger-ui文件夹移动到wwwroot目录下(如果项目没有wwwroot,直接新建该目录) - 保留
UseStaticFiles()的原有配置,SwaggerUI的注入代码无需修改:
c.InjectStylesheet("/swagger-ui/custom.css");
- 将
custom.css的生成操作改为Content,复制到输出目录设置为如果较新则复制
方案二:继续使用嵌入式资源
若要坚持用嵌入式资源,需添加嵌入式文件的访问配置:
- 在
builder.Build()之前,添加以下代码配置嵌入式文件服务:
// 替换下面的命名空间为你的项目实际命名空间,比如"MyWebApi.swagger-ui" var embeddedFileProvider = new EmbeddedFileProvider( typeof(Program).Assembly, "你的项目命名空间.swagger-ui" ); builder.Services.Configure<StaticFileOptions>(options => { options.FileProvider = embeddedFileProvider; });
- 确保
custom.css的生成操作保持为Embedded resource - SwaggerUI的注入路径不变:
c.InjectStylesheet("/swagger-ui/custom.css");
验证步骤
- 启动项目后,直接访问
https://localhost:你的端口/swagger-ui/custom.css,如果能看到CSS内容,说明路径配置正确 - 打开浏览器开发者工具(F12)的网络面板,查看
custom.css的请求状态,若返回404,需检查路径或文件配置是否有误 - 确认
UseStaticFiles()在UseSwaggerUI()之前调用,中间件顺序不能颠倒
内容的提问来源于stack exchange,提问作者bornmanh
相关产品推荐
相关产品推荐

