You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从ASP.NET发送FCM通知至安卓应用时遇405方法不允许错误

解决ASP.NET发送FCM通知时的405错误及接收问题

嘿,我来帮你一步步排查并解决这个问题!首先咱们先锁定核心问题,再逐个修复:

1. 错误的FCM API地址是触发405的关键

你代码里写的webAddr = "https://xxxx/fcm/send"完全不对!FCM的官方有效API端点是https://fcm.googleapis.com/fcm/send,这个错误地址直接导致目标服务器拒绝你的POST请求,返回了405 Method Not Allowed。

2. JSON格式存在语法错误

你构造的JSON字符串末尾多了个多余的逗号,这会导致FCM服务器解析失败:

{"to": "**recievers key**","data": {"message": "This is a Firebase Cloud Messaging Topic Message!",}}

把message值后面的逗号删掉,修正后如下:

{"to": "**recievers key**","data": {"message": "This is a Firebase Cloud Messaging Topic Message!"}}

3. 其他需要确认的细节

  • 确保serverKey是Firebase项目的服务器密钥:可以在Firebase控制台的「项目设置」→「云消息传递」面板找到,别误用了客户端密钥或其他类型的密钥。
  • 检查**recievers key**是有效的设备令牌(FCM Registration Token),如果令牌过期、无效或者和项目不匹配,也会导致发送失败。

修复后的完整代码

这里给你调整好的可运行代码,替换掉错误的部分即可:

static void SendMessage() {
    string serverKey = "你的Firebase服务器密钥";
    try {
        var result = "-1";
        // 修正FCM官方API地址
        var webAddr = "https://fcm.googleapis.com/fcm/send";
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Headers.Add("Authorization: key=" + serverKey);
        httpWebRequest.Method = "POST";
        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) {
            // 修正JSON语法错误
            string json = "{\"to\": \"有效的设备令牌\",\"data\": {\"message\": \"This is a Firebase Cloud Messaging Topic Message!\"}}";
            streamWriter.Write(json);
            streamWriter.Flush();
        }
        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
            result = streamReader.ReadToEnd();
            // 打印FCM响应,方便排查后续问题
            Console.WriteLine("FCM响应结果:" + result);
        }
    } catch (Exception ex) {
        Console.WriteLine("***********http**********" + ex.Message);
    }
}

额外排查提示

如果修复后仍有问题,可以:

  • 检查IIS服务器是否允许对外发送HTTPS请求,部分服务器可能有防火墙或代理限制。
  • 查看FCM返回的result内容,里面会包含具体错误信息(比如令牌无效、密钥权限不足等),能帮你快速定位剩余问题。

内容的提问来源于stack exchange,提问作者user9179535

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:26:50