以下是解决 Swagger 在 IIS 中访问 404 问题的完整方案:
1. ?强制设置开发环境?
修改 web.config,添加环境变量确保 Swagger 启用:
<aspNetCore processPath="dotnet" arguments=".\YourApp.dll" hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
(生产环境默认禁用 Swagger,需手动开启)?
2. ?检查中间件顺序?
在 Startup.cs 中确保中间件顺序正确:
app.UseSwagger(); // 必须在 UseRouting 之前
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "API V1"));
(顺序错误会导致路由拦截)?
3. ?验证 IIS 模块配置?
确认服务器已安装 AspNetCoreModuleV2?58
应用程序池设置为 ?无托管代码? 模式
4. ?处理路径问题?
若部署在子路径(如 /api),需调整 Swagger 配置:
csharp
Copy Code
app.UseSwaggerUI(c => {
c.SwaggerEndpoint("swagger/v1/swagger.json", "API");
});
(路径不匹配会导致 404)
5. ?排除静态文件拦截?
确保未通过重定向规则拦截 /swagger 路径:
xml
Copy Code
<location path="swagger">
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
</location>
(静态资源拦截是常见原因)
6. ?补充排查步骤?
直接访问 https://your-domain/swagger/v1/swagger.json 验证 JSON 文件可访问
检查项目发布模式(依赖框架/独立部署需匹配运行时)
清理浏览器缓存或使用无痕模式测试?7
通过以上步骤可系统性解决 IIS 中 Swagger 404 问题。
查看更多关于Swagger在IIS中访问404怎么办?的详细内容...