ASP.NET Core中自定义Swagger UI后如何访问自定义HTML文件
解决步骤
1. 修正HTML文件的生成操作配置
这是最常见的读取失败原因,默认的文件属性不会把HTML打包到程序集资源中:
- 右键点击项目里的
Swagger_Custom_index.html文件,选择「属性」 - 在属性面板的「高级」分组中,将「生成操作」项设置为 嵌入的资源
- 保存修改后重新编译项目
2. 校验资源路径是否正确
嵌入资源的完整名称规则是「项目默认命名空间+文件夹路径+文件名」,如果你的Startup类所在的命名空间和项目默认命名空间不一致,会导致读取失败。
可以添加以下临时代码输出所有嵌入资源的完整名称,确认HTML对应的路径:
// 可临时放在Configure方法开头,运行后在调试控制台查看输出 var resourceNames = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames(); foreach (var name in resourceNames) { System.Diagnostics.Debug.WriteLine(name); }
将输出中对应HTML的完整字符串替换到你IndexStream参数里的路径即可。
自定义Swagger UI的访问地址
你在SwaggerUI配置中设置了c.RoutePrefix = "docs",所以访问地址为:
- 本地调试:
https://localhost:<你项目的运行端口号>/docs - 部署后:
https://<你的部署域名>/docs
注意:你当前的Swagger和SwaggerUI配置都包裹在
if (env.IsDevelopment())判断中,只有开发环境会开启Swagger,若需要生产环境也可访问,将相关配置移到判断外部即可。
内容的提问来源于stack exchange,提问作者Rasik
相关产品推荐
相关产品推荐

