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

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

上一篇文章讲到如何配置微信开发,以及.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

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

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

 

转载于:https://www.cnblogs.com/yzeng/p/3885981.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值