ASP.NET Core API部署后调用Firebase FCM发送推送报ServiceUnavailable错误
1. 网络连通性问题(最高概率)
FCM依赖的Google服务接口在部分区域无法直接访问,本地运行正常通常是因为本地配置了代理,服务器未做对应配置导致请求无法送达。
- 排查步骤:
- 在服务器上直接通过curl或浏览器访问
https://fcm.googleapis.com,若返回401/404则代表网络连通,若超时/连接失败则为网络不通 - 检查服务器系统代理配置:注意ASP.NET Core应用默认运行在应用池服务账号下,用户级别的代理配置对服务账号无效,需配置系统级代理,或在代码中为Firebase SDK显式指定代理
- 确认服务器出口IP没有被Google服务临时限制
- 在服务器上直接通过curl或浏览器访问
2. TLS版本不匹配
Firebase服务要求请求使用TLS 1.2及以上版本,部分服务器的.NET运行环境默认启用的TLS版本过低会导致请求被拦截。
- 排查步骤:
- 在FirebaseApp初始化代码前添加强制指定TLS版本的代码:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13; - 检查服务器组策略、注册表配置,确认TLS 1.2/1.3未被禁用
- 在FirebaseApp初始化代码前添加强制指定TLS版本的代码:
3. 防火墙/安全软件拦截
服务器的系统防火墙、第三方杀毒软件、EDR等安全工具可能会拦截对外访问Google服务的请求。
- 排查步骤:
- 临时关闭服务器防火墙和第三方安全工具,重试推送请求,若恢复正常则为安全规则拦截
- 添加入站/出站规则,将
fcm.googleapis.com、accounts.google.com等FCM和Google OAuth依赖的域名加入白名单
4. IIS应用池配置问题
若使用IIS部署服务,应用池的运行身份配置错误可能导致请求无权限发出。
- 排查步骤:
- 将应用池的运行身份从默认的Local Service修改为Local System或拥有网络访问权限的自定义服务账号,重启应用池后测试
- 在服务器本地运行一个包含最简FCM推送逻辑的控制台程序,若控制台可正常推送则确认是IIS配置问题,排除环境网络因素
内容的提问来源于stack exchange,提问作者TurtleCactus
相关产品推荐
相关产品推荐

