微信开发回复消息收不到 微信公众账号开发者为什么回复消息不成功的原因解决

微信开发回复消息收不到的最大罪魁祸首,微信公众账号为什么回复消息不成功的原因解决办法

上一篇文章讲到如何配置微信开发,以及.NET平台使用MVC做一个小DEMO的流程,还有常见收不到消息的问题,本篇文章讲的是一个很容易让人忽略但又是很重要的问题导致用户收不到响应的消息原因。

上一篇文章链接:[C#开发微信.NET平台MVC微信开发 发送普通消息Demo以及收不到消息的问题]

(如果你是通过搜索引擎进来的建议你看下上篇文章,说不定就解决你的问题了)

这个问题出在代码

首先我们的C#代码是这么写的:

复制代码
 1 //接收/回复 消息接口
 2         [HttpPost]
 3         public ActionResult WeiXin()
 4         {
 5             Request.ContentEncoding = Encoding.UTF8;
 6             var msg = XmlHelper.ToObject<WxTextMessage.Accept>(Request.InputStream);
 7             if (msg == null)
 8                 return Content("");
 9             WxTextMessage.Send smsg = new WxTextMessage.Send() { Content = "ccc", CreateTime = msg.CreateTime, FromUserName = msg.FromUserName, ToUserName = msg.ToUserName };
10             var str = XmlHelper.ToXml(smsg);
11             return Content(str,"text/xml",Encoding.UTF8);
12         }
复制代码

第5~8行:将XML数据转换为对象

第9~11行:实例化回复消息对象、转换为XML、返回结果

 

看出什么问题了吗?(反正我是看了几个小时才发现的)

其实这样写犯了个巨大的错误:

在第9行的地方:响应的消息中:

FromUserName = msg.FromUserName, ToUserName = msg.ToUserName

错误的原因就在为:msg为接收到的消息,而我们实例化的是返回的消息,在接收时:FromUser=用户 ToUser=我 ,然而在返回消息时From和To是反过来的,FromUser=我 ToUser=用户,如果直接这样写就变成了给自己发送消息,因此要反过来写变成:

FromUserName = msg.ToUserName, ToUserName = msg.FromUserName

这样一改,用户立即能收到回复的消息,如此简单的细节居然浪费俺一晚上的时间,真的是不甘心啊!

写篇文章帮助更多遇到这个问题的人……

 

posted @   yzeng  阅读(6163)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示