/// <summary> /// 最简单的Page_Load写法(本方法仅用于演示过程,未实际使用到) /// </summary> private void MiniProcess() { var postModel = new PostModel() { Msg_Signature = Request.QueryString["msg_signature"], Timestamp = Request.QueryString["timestamp"], Nonce = Request.QueryString["nonce"], //以下保密信息不会(不应该)在网络上传播,请注意 Token = Token, EncodingAESKey = EncodingAESKey, CorpId = CorpId, }; var maxRecordCount = 10; //自定义MessageHandler,对微信请求的详细判断操作都在这里面。 var messageHandler = new QyCustomMessageHandler(Request.InputStream, postModel, maxRecordCount); //执行微信处理过程 messageHandler.Execute(); //自动返回加密后结果 WriteContent(messageHandler.FinalResponseDocument.ToString());//为了解决官方微信5.0软件换行bug暂时添加的方法,平时用下面一个方法即可 Response.End(); }
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); //Logger.Log4Net.Info("lcid:" + ilcId.ToString()); //EG.WeChat.Platform.BL.ISdkETS_QY pSdk = EG.WeChat.Platform.BL.QYSdkETS.Singleon; //var pfunc = pSdk.GetResConvertForResponse("news"); //var pRes = pfunc(1069, "news"); ////return pRes; //if (string.IsNullOrEmpty(TW.Platform.BL.QYSdkETS.Singleon.RHost)) // TW.Platform.BL.QYSdkETS.Singleon.RHost = this.Request.Url.Host; //var messageHandler = VerifyRequest(postModel, maxRecordCount); if (messageHandler.RequestMessage == null) { //验证不通过或接受信息有错误 return(Content("驗證錯誤")); } 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("")); } }
public ActionResult Post(PostModel postModel) { //没有参数,带有id才能知道是访问哪个公众号 if (string.IsNullOrEmpty(Request["id"])) { return(new WeixinResult("非法路径请求!")); } var maxRecordCount = 10; WC_OfficalAccountsModel model = account_BLL.GetById(Request["id"]); postModel.CorpId = model.AppId; postModel.EncodingAESKey = model.OfficalKey; postModel.Token = model.Token; //自定义MessageHandler,对微信请求的详细判断操作都在这里面。 var messageHandler = new QyCustomMessageHandler(Request.InputStream, postModel, model.Id, 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("")); } }
public ActionResult MiniPost(PostModel postModel) { var maxRecordCount = 10; postModel.Token = Token; postModel.EncodingAESKey = EncodingAESKey; postModel.CorpId = CorpId; //自定义MessageHandler,对微信请求的详细判断操作都在这里面。 var messageHandler = new QyCustomMessageHandler(Request.InputStream, postModel, maxRecordCount); //执行微信处理过程 messageHandler.Execute(); //自动返回加密后结果 return new FixWeixinBugWeixinResult(messageHandler); }
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(""); } }
public ActionResult MiniPost(PostModel postModel) { var maxRecordCount = 10; postModel.Token = Token; postModel.EncodingAESKey = EncodingAESKey; postModel.CorpId = CorpId; //自定义MessageHandler,对微信请求的详细判断操作都在这里面。 var messageHandler = new QyCustomMessageHandler(Request.InputStream, postModel, maxRecordCount); //执行微信处理过程 messageHandler.Execute(); //自动返回加密后结果 return(new FixWeixinBugWeixinResult(messageHandler)); }
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); messageHandler.Execute(); var a = new FixWeixinBugWeixinResult(messageHandler); return(a);//为了解决官方微信5.0软件换行bug暂时添加的方法,平时用下面一个方法即可 }
/// <summary> /// 验证请求,并获取消息处理方法 /// </summary> /// <param name="postModel"></param> /// <param name="maxRecordCount"></param> /// <returns></returns> private QyCustomMessageHandler VerifyRequest(PostModel postModel, int maxRecordCount) { QyCustomMessageHandler pqy = null; foreach (var corp in EG.WeChat.Utility.WeiXin.WeiXinConfiguration.corpInfos) { postModel.Token = corp.token; postModel.EncodingAESKey = corp.aeskey; postModel.CorpId = EG.WeChat.Utility.WeiXin.WeiXinConfiguration.cropId; pqy = new QyCustomMessageHandler(Request.InputStream, postModel, maxRecordCount); if (pqy.RequestMessage != null) { break; } } return(pqy); }
public ActionResult Post(PostModel postModel, bool isDebug = false) { var maxRecordCount = 10; log.Debug("Entering WeChat Post "); Stream s = System.Web.HttpContext.Current.Request.InputStream; byte[] b = new byte[s.Length]; s.Read(b, 0, (int)s.Length); var postStr = Encoding.UTF8.GetString(b); log.Debug("content-type: " + Request.ContentType); log.Debug("raw data: " + postStr); log.Debug("raw url: " + Request.RawUrl); QyCustomMessageHandler messageHandler = null; //var iAppID = int.Parse(Request["AppID"] ?? "1"); try { var objConfig = WeChatCommonService.GetWeChatConfig(); postModel.Token = objConfig.WeixinToken; // Token; postModel.EncodingAESKey = objConfig.WeixinEncodingAESKey; // EncodingAESKey; postModel.CorpId = objConfig.WeixinCorpId; // CorpId; } catch (Exception ex) { log.Error(ex, "CommonService.GetWeChatConfig - Exception: " + ex.Message); } try { log.Debug("weixin maxRecordCount2: " + maxRecordCount); //自定义MessageHandler,对微信请求的详细判断操作都在这里面。 messageHandler = new QyCustomMessageHandler(Request.InputStream, postModel, maxRecordCount, isDebug); log.Debug("messageHandler.RequestMessage : " + messageHandler.RequestMessage); if (messageHandler.RequestMessage == null) { log.Debug("messageHandler.RequestMessage is null"); //验证不通过或接受信息有错误 } //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")); if (isDebug) { // messageHandler.FinalResponseDocument.Save(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_FinalResponse_" + messageHandler.ResponseMessage.ToUserName + ".txt")); log.Debug("messageHandler.ResponseMessage : " + messageHandler.FinalResponseDocument.Document.ToString()); } //自动返回加密后结果 return(new FixWeixinBugWeixinResult(messageHandler)); } catch (Exception ex) { log.Error(ex, "执行微信处理过程 - Exception: " + ex.Message); if (messageHandler != null) { log.Error("执行微信处理过程 - Request: " + messageHandler.RequestDocument.ToString()); log.Error("执行微信处理过程 - Response: " + messageHandler.FinalResponseDocument.ToString()); } } return(Content("")); }
public static readonly string CorpId = "wx9b25d5460920c234"; //与微信企业账号后台的EncodingAESKey设置保持一致,区分大小写。 protected void Page_Load(object sender, EventArgs e) { string msg_signature = Request["msg_signature"] ?? ""; string timestamp = Request["timestamp"] ?? ""; string nonce = Request["nonce"] ?? ""; string echostr = Request["echostr"] ?? ""; if (Request.HttpMethod == "GET") { //get method - 仅在微信后台填写URL验证时触发 var verifyUrl = QY.Signature.VerifyURL(Token, EncodingAESKey, CorpId, msg_signature, timestamp, nonce, echostr); if (verifyUrl != null) { WriteContent(verifyUrl); //返回解密后的随机字符串则表示验证通过 } else { WriteContent("如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"); } Response.End(); } else { //post method - 当有用户想公众账号发送消息时触发 var postModel = new PostModel() { Msg_Signature = Request.QueryString["msg_signature"], Timestamp = Request.QueryString["timestamp"], Nonce = Request.QueryString["nonce"], //以下保密信息不会(不应该)在网络上传播,请注意 Token = Token, EncodingAESKey = EncodingAESKey, CorpId = CorpId, }; var maxRecordCount = 10; //自定义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")); //自动返回加密后结果 WriteContent(messageHandler.FinalResponseDocument.ToString());//为了解决官方微信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(); } } finally { Response.End(); } } }
public static readonly string CorpId = "wx7618c0a6d9358622";//与微信企业账号后台的EncodingAESKey设置保持一致,区分大小写。 protected void Page_Load(object sender, EventArgs e) { string msg_signature = Request["msg_signature"]; string timestamp = Request["timestamp"]; string nonce = Request["nonce"]; string echostr = Request["echostr"]; if (Request.HttpMethod == "GET") { //get method - 仅在微信后台填写URL验证时触发 var verifyUrl = QY.Signature.VerifyURL(Token, EncodingAESKey, CorpId, msg_signature, timestamp, nonce, echostr); if (verifyUrl != null) { WriteContent(verifyUrl); //返回解密后的随机字符串则表示验证通过 } else { WriteContent("如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"); } Response.End(); } else { //post method - 当有用户想公众账号发送消息时触发 var postModel = new PostModel() { Msg_Signature = Request.QueryString["msg_signature"], Timestamp = Request.QueryString["timestamp"], Nonce = Request.QueryString["nonce"], //以下保密信息不会(不应该)在网络上传播,请注意 Token = Token, EncodingAESKey = EncodingAESKey, CorpId = CorpId, }; var maxRecordCount = 10; //自定义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")); //自动返回加密后结果 WriteContent(messageHandler.FinalResponseDocument.ToString());//为了解决官方微信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(); } } finally { Response.End(); } } }
public ActionResult Post(PostModel postModel) { var maxRecordCount = 10; postModel.Token = Token; postModel.EncodingAESKey = EncodingAESKey; postModel.CorpId = SuiteId; //自定义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(); //测试时可开启,帮助跟踪数据 if (!string.IsNullOrEmpty(messageHandler.TextResponseMessage)) { //messageHandler.ResponseDocument.Save(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_Response_" + messageHandler.ResponseMessage.ToUserName + ".txt")); var responseText = messageHandler.TextResponseMessage; using (StreamWriter sw = new StreamWriter(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_Response_" + messageHandler.ResponseMessage.ToUserName + ".txt"), true)) { sw.Write(responseText); } if (messageHandler.FinalResponseDocument != null) { //messageHandler.FinalResponseDocument.Save(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_FinalResponse_" + messageHandler.ResponseMessage.ToUserName + ".txt")); using (StreamWriter sw = new StreamWriter(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_Response_" + messageHandler.ResponseMessage.ToUserName + ".txt"), true)) { sw.Write(messageHandler.FinalResponseDocument.ToString()); } } } //自动返回加密后结果 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("")); } }
public ActionResult Post(PostModel postModel) { var maxRecordCount = 0; postModel.Token = Token; postModel.EncodingAESKey = EncodingAESKey; postModel.CorpId = CorpId; //自定义MessageHandler,对微信请求的详细判断操作都在这里面。 var messageHandler = new QyCustomMessageHandler(Request.InputStream, postModel, maxRecordCount); if (messageHandler.RequestMessage == null) { //验证不通过或接受信息有错误 string querystr = "\r\n"; Error error = new Error(); error.Message = "post对象"; error.HostName = Request.Url.Host; error.StatusCode = 100; error.Time = DateTime.Now; error.User = Environment.UserName; error.Type = "post "; error.Detail = "yanzheng ,创建一个Elmah的Error对象并写错误日志 但没有Server Variables,cookie等信息" + querystr; error.Source = "Page_Load"; Elmah.ErrorLog.Default.Log(error); //创建一个异常并写入错误日志,无法自定义错误的类型 Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("创建一个异常并写入错误日志" + querystr)); } 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")); string querystr = "\r\n"; Error error = new Error(); error.Message = "post对象"; error.HostName = Request.Url.Host; error.StatusCode = 100; error.Time = DateTime.Now; error.User = Environment.UserName; error.Type = "post "; querystr += "messageHandler.RequestMessage.FromUserName:"******",messageHandler.ResponseMessage.ToUserName:"******"THIS IS TEST ,创建一个Elmah的Error对象并写错误日志 但没有Server Variables,cookie等信息" + querystr; error.Source = "Page_Load"; Elmah.ErrorLog.Default.Log(error); //创建一个异常并写入错误日志,无法自定义错误的类型 Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("创建一个异常并写入错误日志" + querystr)); //自动返回加密后结果 return new FixWeixinBugWeixinResult(messageHandler);//为了解决官方微信5.0软件换行bug暂时添加的方法,平时用下面一个方法即可 } catch (Exception ex) { #if A 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(); } #else string querystr = "\r\n"; Error error = new Error(); error.Message = "post对象"; error.HostName = Request.Url.Host; error.StatusCode = 100; error.Time = DateTime.Now; error.User = Environment.UserName; error.Type = "post "; querystr += ex.Message; error.Detail = "THIS IS TEST ,创建一个Elmah的Error对象并写错误日志 但没有Server Variables,cookie等信息" + querystr; error.Source = "Page_Load"; Elmah.ErrorLog.Default.Log(error); //创建一个异常并写入错误日志,无法自定义错误的类型 Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("创建一个异常并写入错误日志" + querystr)); #endif return Content(""); } }
public ActionResult Post(PostModel postModel, bool isDebug = false) { var maxRecordCount = 10; log.Debug("Entering WeChat Post "); QyCustomMessageHandler messageHandler = null; //var iAppID = int.Parse(Request["AppID"] ?? "1"); //try //{ // var objConfig = WeChatCommonService.GetWeChatConfig(int.Parse(WebConfigurationManager.AppSettings["WeixinAppId"])); // postModel.Token = objConfig.WeixinToken;// Token; // postModel.EncodingAESKey = objConfig.WeixinEncodingAESKey;// EncodingAESKey; // postModel.CorpId = objConfig.WeixinCorpId;// CorpId; //} //catch (Exception ex) //{ // log.Error(ex, "CommonService.GetWeChatConfig - Exception: " + ex.Message); //} try { log.Debug("weixin maxRecordCount2: " + maxRecordCount); //自定义MessageHandler,对微信请求的详细判断操作都在这里面。 messageHandler = new QyCustomMessageHandler(Request.InputStream, postModel, maxRecordCount, isDebug); log.Debug("messageHandler.RequestMessage : " + messageHandler.RequestMessage); if (messageHandler.RequestMessage == null) { log.Debug("messageHandler.RequestMessage is null"); //验证不通过或接受信息有错误 } //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")); _requestMsgLog.WriteRequestLog(messageHandler.RequestMessage, postModel.AppId); if (isDebug) { // messageHandler.FinalResponseDocument.Save(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_FinalResponse_" + messageHandler.ResponseMessage.ToUserName + ".txt")); foreach (var a in messageHandler.ResponseMessage) { var strXML = messageHandler.ResponseDocument(a as ResponseMessageBaseWechat).ToString(SaveOptions.OmitDuplicateNamespaces); log.Debug("messageHandler.ResponseMessage : " + strXML); } } _requestMsgLog.WriteResponseLog(messageHandler.ResponseMessage, postModel.AppId); //自动返回加密后结果 return(new FixWeixinBugWeixinResult(messageHandler)); } catch (Exception ex) { log.Error(ex, "执行微信处理过程 - Exception: " + ex.Message); if (messageHandler != null) { log.Error("执行微信处理过程 - Request: " + messageHandler.RequestDocument.ToString()); foreach (var a in messageHandler.ResponseMessage) { var strXML = messageHandler.ResponseDocument(a as ResponseMessageBaseWechat).ToString(SaveOptions.OmitDuplicateNamespaces); log.Debug("执行微信处理过程 - Response : " + strXML); } } } return(Content("")); }