zoukankan      html  css  js  c++  java
  • 微信开发回复消息收不到 微信公众账号开发者为什么回复消息不成功的原因解决

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

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

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

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

    致读者:感谢你阅读本文,请随手点击右下角的推荐或分享,谢谢!
  • 相关阅读:
    [转载]每天要说无数次的话,原来英语这么说
    [转载]What I Have Lived For 一生何求?
    WIN 7 和fedora双系统引导问题
    [转载]网站建设中一些容易被忽视的问题
    linux进程控制-wait()
    shell(2)
    电脑英语缩略词
    shell(1)
    [转载]无论成败 但求做最好的自己
    [转载]C++出错提示英汉对照表
  • 原文地址:https://www.cnblogs.com/yzeng/p/3885981.html
Copyright © 2011-2022 走看看