部署为Windows Service的Asp.Net Core MVC Api调用Swagger报Failed to fetch
排查方向
1. 确认CORS策略是否真正生效
- 先修正策略名错误:将使用时的
AllowAllOrigins改为定义好的AllowAnyOrigin,重新发布服务并重启。 - 打开浏览器开发者工具(F12),查看Network面板的请求响应头,确认
Access-Control-Allow-Origin是否存在。同时检查program.cs中间件顺序:CORS中间件必须放在UseRouting之后,UseAuthorization和UseEndpoints之前。
2. 检查Windows Service的运行状态与权限
- 打开服务管理器(
services.msc),确认API服务处于Running状态,启动类型为Automatic。 - 检查服务登录账户:若使用Local System账户,可能存在权限限制(如访问数据库、文件系统),可尝试更换为具有管理员权限的本地账户,重启服务后测试。
- 查看事件日志:在事件查看器的「Windows日志->应用程序」中,查找API服务启动或运行时的报错信息,比如端口占用、依赖缺失等。
3. 验证端口监听与占用情况
- 执行命令
netstat -ano | findstr :5000,检查5000端口是否被其他进程占用。若被占用,可终止对应进程或修改API监听端口(在appsettings.json中调整Urls配置,例如"Urls": "http://localhost:5001")。 - 确认API监听地址:若配置为
http://localhost:5000,可尝试用http://127.0.0.1:5000/swagger访问,排除localhost解析问题。
4. 排查浏览器侧限制
- 禁用Chrome所有扩展(如广告拦截、隐私插件)后测试,避免插件拦截本地请求。
- 使用Chrome隐身窗口打开swagger页面,排除浏览器缓存或隐私设置的影响。
5. 验证API服务本身可用性
- 用Postman或
curl工具直接调用接口(例如curl http://localhost:5000/api/xxx),若工具能正常访问,说明问题出在浏览器端;若工具也失败,需排查服务内部逻辑或网络配置。 - 查看API日志(如Serilog、NLog输出),确认请求是否到达服务,以及是否存在内部报错。
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

