最近在做公众号开发,其服务配置为自己的服务器,有一段时间一直出现该公众号提供的服务出现故障,请稍后再试,这样的提示,相信有很多小伙伴遇到过这样的问题!
一、 具体问题描述
事件响应或消息自动回复时,功能可以正常实现,当功能完成之后就会出现,该公众号提供的服务出现故障,请稍后再试,也就是说功能完全实现,就是看见这个提示让人很操蛋!
二、后台服务使用的框架
语言:C#
框架:Senparc.weixin
三、解决问题经过
1. 检查微信服务器开发配置
验证通过,没有问题
2.猜想可能是服务器没有响应微信服务器的某个请求
我去自己的服务器打开了请求失败跟踪,具体方法如下:
1)服务器IIS
配置:
第一步:开启失败请求跟踪规则
按照上面的步骤进行配置,注意:目录是存放错误报告的;
第二步:添加规则,如下图所示
完成如上的步骤,就可以看到一条规则,如下图所示:
2)查看错误XML
文件:
完成上面的工作之后,就可以看到跟踪文件,如图所示:
打开文件,就可以看到请求失败的具体信息:
然而发现并没有失败
3.猜想是我响应时返回的内容有问题
使用的返回方式如下代码所示:
public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage){var responseMessage = base.CreateResponseMessage<ResponseMessageText>();var resultContent = requestMessage.EventKey.Split('#');CustomApi.SendText(_appId, requestMessage.FromUserName,$"袋鼠圈专注于学龄前儿童运动与健康管理服务。 \n\n 安防课后延时班正在火热报名中!!!10节课学会安防基础知识和基本技能,让孩子掌握自我保护技巧,在遇险后能第一时间做出求生反应。\n\n点击这里立即报名</a> ");return responseMessage;}
分析代码:发现我直接使用了SendText
方法向微信发送了一条消息,但是返回的responseMessage
中的Content
为null
,所以微信服务器报这条错误,修改如下:
public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage){var responseMessage = base.CreateResponseMessage<ResponseMessageText>();responseMessage.Content = $"袋鼠圈专注于学龄前儿童运动与健康管理服务。 \n\n 安防课后延时班正在火热报名中!!!10节课学会安防基础知识和基本技能,让孩子掌握自我保护技巧,在遇险后能第一时间做出求生反应。\n\n点击这里立即报名</a> ";return responseMessage;}
到此,解决了微信公众号的那个让人蛋疼的服务。
四、总结
出现此问题,如果说你的配置没有问题(经过第一步),那么就是自己的服务器错误,如果说你的服务器没有发现错误,那么就是你在响应返回是的内容或方式不正确,希望你有所帮助