在Senparc.Weixin.MP.Sample项目下,Controllers/QY/QYController.cs文件
Post方法改为
[HttpPost]
[ActionName("Index")]
public ActionResult Post(PostModel postModel)
{
var maxRecordCount = 10;
postModel.Token = Token;
postModel.EncodingAESKey = EncodingAESKey;
postModel.CorpId = CorpId;
//自定义MessageHandler,对微信请求的详细判断操作都在这里面。
var messageHandler = new QyCustomMessageHandler(Request.InputStream, postModel, maxRecordCount);
if (messageHandler.RequestMessage == null)
{
//验证不通过或接受信息有错误
}
try
{
//测试时可开启此记录,帮助跟踪数据,使用前请确保App_Data文件夹存在,且有读写权限。
messageHandler.RequestDocument.Save(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_Request_" + messageHandler.RequestMessage.FromUserName + ".txt"));
//执行微信处理过程
messageHandler.Execute();
//测试时可开启,帮助跟踪数据
messageHandler.ResponseDocument.Save(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_Response_" + messageHandler.ResponseMessage.ToUserName + ".txt"));
messageHandler.FinalResponseDocument.Save(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_FinalResponse_" + messageHandler.ResponseMessage.ToUserName + ".txt"));
//自动返回加密后结果
return new FixWeixinBugWeixinResult(messageHandler);//为了解决官方微信5.0软件换行bug暂时添加的方法,平时用下面一个方法即可
}
catch (Exception ex)
{
using (TextWriter tw = new StreamWriter(Server.MapPath("~/App_Data/Qy_Error_" + DateTime.Now.Ticks + ".txt")))
{
tw.WriteLine("ExecptionMessage:" + ex.Message);
tw.WriteLine(ex.Source);
tw.WriteLine(ex.StackTrace);
//tw.WriteLine("InnerExecptionMessage:" + ex.InnerException.Message);
if (messageHandler.FinalResponseDocument != null)
{
tw.WriteLine(messageHandler.FinalResponseDocument.ToString());
}
tw.Flush();
tw.Close();
}
return Content("");
}
}
错误消息会记录在App_Data/Qy文件夹下