public async Task<IdentityResult> ChangePassword(PostModel userModel)
        {
            var user = await _userManager.FindAsync(userModel.username, userModel.password);
            var result = await _userManager.ChangePasswordAsync(user.Id, userModel.password, userModel.newpassword);

            return result;
        }
        public async Task<IdentityResult> DeleteUser(PostModel userModel)
        {
            var user = await _userManager.FindAsync(userModel.username, userModel.password);
            var result = await _userManager.DeleteAsync(user);

            return result;
        }
示例#3
0
 public void Update(PostModel post)
 {
     BlogID = post.BlogID;
     Content = post.Content;
     Description = post.Description;
     Guid = post.Guid;
     Link = post.Link;
     PublicationDate = post.PublicationDate;
     Title = post.Title;
 }
        public async Task<IdentityResult> RegisterUser(PostModel userModel)
        {
            IdentityUser user = new IdentityUser
            {
                UserName = userModel.username
            };

            var result = await _userManager.CreateAsync(user, userModel.password);

            return result;
        }
示例#5
0
        public void Update(PostModel post)
        {
            if(post.PostId == 0)
            {
                PostDate = DateTime.Now;
            }

            PostId = post.PostId;
            PostTitle = post.PostTitle;
            PostContent = post.PostContent;
        }
 public dynamic Post(PostModel model)
 {
     var user = Users.Name(model.Username);
     if (user == null || (!string.IsNullOrEmpty(model.Password) && !user.PasswordValid(model.Password)))
     {
         var response = new HttpResponseMessage(HttpStatusCode.BadRequest);
         response.Content = new StringContent("invalid_grant");
         return response;
     }
     return Json(new { id = user.Username, scope = user.IntersectScope(model.Scope) });
 }
        // todo: find a way to wire this into the UI. this will make a comprehensive demo.
        public IHttpActionResult Post(PostModel model)
        {
            if (!_devAccessChecker.UserHasDevAccess())
                return NotFound();

            if (string.IsNullOrWhiteSpace(model.code) || string.IsNullOrWhiteSpace(model.description))
                return BadRequest("IC was not added: please send all fields.");

            var newIc = new IntegratedCircuit { Code = model.code, Description = model.description };
            _session.Save(newIc);

            var location = Url.Link("DefaultApi", new { controller = "ics", id = newIc.Id });
            return Created(location, newIc);
        }
示例#8
0
        public ActionResult AddPost(PostModel postModel)
        {
            ObjectId themeId = ObjectId.TryParse(postModel.ThemeId, out themeId) ? themeId : ObjectId.Empty;
            _themeDoc = _themeService.GetTheme(themeId);

            if (ModelState.IsValid)
            {
                var newPost = new PostDocument
                                  {
                                      PostId = ObjectId.GenerateNewId(),
                                      Author = User == null ? AnonymousName : User.Identity.Name,
                                      Date = DateTime.Now,
                                      Details = postModel.Details,
                                  };

                _postService.AddPost(ObjectId.Parse(postModel.ThemeId), newPost);

                PostListItemModel postListItemModel = MapPost(newPost);

                return new JsonResult
                           {
                               Data = new
                                          {
                                              result = 1,
                                              postHtml = RenderPartialHelper.RenderPartialViewToString("PostListItem", postListItemModel, this),
                                              addHtml = RenderPartialHelper.RenderPartialViewToString("AddPost", new PostModel { ThemeId = postModel.ThemeId }, this),
                                          }
                           };
            }

            return new JsonResult
                       {
                           Data = new
                                      {
                                          result = 0,
                                          addHtml = RenderPartialHelper.RenderPartialViewToString("AddPost", postModel, this),
                                      }
                       };
        }
 /// <summary>
 /// 检查签名是否正确
 /// </summary>
 /// <param name="signature"></param>
 /// <param name="postModel">需要提供:Timestamp、Nonce、Token</param>
 /// <returns></returns>
 public static bool Check(string signature, PostModel postModel)
 {
     return(Check(postModel.Timestamp, postModel.Nonce, postModel.Token));
 }
示例#10
0
 public static async Task<DataModel.Comment> PostCommentAsync(String access_code, String Uri, PostModel.Comment comment)
 {
     Object message = await PostAsync(access_code, Uri, comment, typeof(DataModel.Comment));
     return (DataModel.Comment)message;
 }
示例#11
0
 /// <summary>
 /// 返回正确的签名
 /// </summary>
 /// <param name="postModel">需要提供:Timestamp、Nonce、Token</param>
 /// <returns></returns>
 public static string GetSignature(PostModel postModel)
 {
     return(GetSignature(postModel.Timestamp, postModel.Nonce, postModel.Token));
 }
示例#12
0
        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();
                }
            }
        }
示例#13
0
        public ActionResult Post(PostModel postModel)
        {
            if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token))
            {
                return(Content("参数错误!"));
            }

            #region 打包 PostModel 信息

            postModel.Token          = Token;          //根据自己后台的设置保持一致
            postModel.EncodingAESKey = EncodingAESKey; //根据自己后台的设置保持一致
            postModel.AppId          = AppId;          //根据自己后台的设置保持一致

            #endregion

            //v4.2.2之后的版本,可以设置每个人上下文消息储存的最大数量,防止内存占用过多,如果该参数小于等于0,则不限制
            var maxRecordCount = 10;

            //自定义MessageHandler,对微信请求的详细判断操作都在这里面。
            var messageHandler = new CustomMessageHandler(Request.InputStream, postModel, maxRecordCount);
            try
            {
                #region 记录 Request 日志

                var logPath = Server.MapPath(string.Format("~/App_Data/MP/{0}/", DateTime.Now.ToString("yyyy-MM-dd")));
                if (!Directory.Exists(logPath))
                {
                    Directory.CreateDirectory(logPath);
                }


                //测试时可开启此记录,帮助跟踪数据,使用前请确保App_Data文件夹存在,且有读写权限。
                messageHandler.RequestDocument.Save(Path.Combine(logPath, string.Format("{0}_Request_{1}.txt", _getRandomFileName(), messageHandler.RequestMessage.FromUserName)));
                if (messageHandler.UsingEcryptMessage)
                {
                    messageHandler.EcryptRequestDocument.Save(Path.Combine(logPath, string.Format("{0}_Request_Ecrypt_{1}.txt", _getRandomFileName(), messageHandler.RequestMessage.FromUserName)));
                }

                #endregion

                /* 如果需要添加消息去重功能,只需打开OmitRepeatedMessage功能,SDK会自动处理。
                 * 收到重复消息通常是因为微信服务器没有及时收到响应,会持续发送2-5条不等的相同内容的RequestMessage*/
                messageHandler.OmitRepeatedMessage = true;

                //执行微信处理过程
                messageHandler.Execute();

                #region 记录 Response 日志

                //测试时可开启,帮助跟踪数据

                //if (messageHandler.ResponseDocument == null)
                //{
                //    throw new Exception(messageHandler.RequestDocument.ToString());
                //}
                if (messageHandler.ResponseDocument != null)
                {
                    messageHandler.ResponseDocument.Save(Path.Combine(logPath, string.Format("{0}_Response_{1}.txt", _getRandomFileName(), messageHandler.RequestMessage.FromUserName)));
                }

                if (messageHandler.UsingEcryptMessage && messageHandler.FinalResponseDocument != null)
                {
                    //记录加密后的响应信息
                    messageHandler.FinalResponseDocument.Save(Path.Combine(logPath, string.Format("{0}_Response_Final_{1}.txt", _getRandomFileName(), messageHandler.RequestMessage.FromUserName)));
                }

                #endregion `

                //return Content(messageHandler.ResponseDocument.ToString());//v0.7-
                //return new WeixinResult(messageHandler);//v0.8+
                return(new FixWeixinBugWeixinResult(messageHandler));//为了解决官方微信5.0软件换行bug暂时添加的方法,平时用下面一个方法即可
            }
            catch (Exception ex)
            {
                #region 异常处理
                WeixinTrace.Log("MessageHandler错误:{0}", ex.Message);

                using (TextWriter tw = new StreamWriter(Server.MapPath("~/App_Data/Error_" + _getRandomFileName() + ".txt")))
                {
                    tw.WriteLine("ExecptionMessage:" + ex.Message);
                    tw.WriteLine(ex.Source);
                    tw.WriteLine(ex.StackTrace);
                    //tw.WriteLine("InnerExecptionMessage:" + ex.InnerException.Message);

                    if (messageHandler.ResponseDocument != null)
                    {
                        tw.WriteLine(messageHandler.ResponseDocument.ToString());
                    }

                    if (ex.InnerException != null)
                    {
                        tw.WriteLine("========= InnerException =========");
                        tw.WriteLine(ex.InnerException.Message);
                        tw.WriteLine(ex.InnerException.Source);
                        tw.WriteLine(ex.InnerException.StackTrace);
                    }

                    tw.Flush();
                    tw.Close();
                }
                return(Content(""));

                #endregion
            }
        }
 public async Task Update(Guid id, PostModel model)
 {
     await PostRepository.Update(id, model.ToEntity());
 }
示例#15
0
 public CustomMessageHandlers(RequestMessageBase requestMessage, PostModel postModel = null, int maxRecordCount = 0)
     : base(requestMessage, postModel, maxRecordCount)
 {
 }
示例#16
0
        public ActionResult Post(PostModel postModel)
        {
            if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token))
            {
                return(Content("参数错误!"));
            }

            postModel.Token          = SystemContext.Instance.WeiXinAppInfo.Token;
            postModel.EncodingAESKey = SystemContext.Instance.WeiXinAppInfo.EncodingAESKey; //根据自己后台的设置保持一致
            postModel.AppId          = SystemContext.Instance.WeiXinAppInfo.AppID;          //根据自己后台的设置保持一致

            //v4.2.2之后的版本,可以设置每个人上下文消息储存的最大数量,防止内存占用过多,如果该参数小于等于0,则不限制
            var maxRecordCount = 10;

            //自定义MessageHandler,对微信请求的详细判断操作都在这里面。
            var messageHandler = new CustomMessageHandler(Request.InputStream, postModel, maxRecordCount);

            try
            {
                //测试时可开启此记录,帮助跟踪数据,使用前请确保App_Data文件夹存在,且有读写权限。
                messageHandler.RequestDocument.Save(Server.MapPath("~/App_Data/" + DateTime.Now.Ticks + "_Request_" + messageHandler.RequestMessage.FromUserName + ".txt"));
                if (messageHandler.UsingEcryptMessage)
                {
                    messageHandler.EcryptRequestDocument.Save(Server.MapPath("~/App_Data/" + DateTime.Now.Ticks + "_Request_Ecrypt_" + messageHandler.RequestMessage.FromUserName + ".txt"));
                }

                /* 如果需要添加消息去重功能,只需打开OmitRepeatedMessage功能,SDK会自动处理。
                 * 收到重复消息通常是因为微信服务器没有及时收到响应,会持续发送2-5条不等的相同内容的RequestMessage*/
                messageHandler.OmitRepeatedMessage = true;

                //执行微信处理过程
                messageHandler.Execute();

                //测试时可开启,帮助跟踪数据
                messageHandler.ResponseDocument.Save(Server.MapPath("~/App_Data/" + DateTime.Now.Ticks + "_Response_" + messageHandler.ResponseMessage.ToUserName + ".txt"));
                if (messageHandler.UsingEcryptMessage)
                {
                    //记录加密后的响应信息
                    messageHandler.FinalResponseDocument.Save(Server.MapPath("~/App_Data/" + DateTime.Now.Ticks + "_Response_Final_" + messageHandler.ResponseMessage.ToUserName + ".txt"));
                }

                //return Content(messageHandler.ResponseDocument.ToString());//v0.7-
                return(new FixWeixinBugWeixinResult(messageHandler));//为了解决官方微信5.0软件换行bug暂时添加的方法,平时用下面一个方法即可
                //return new WeixinResult(messageHandler);//v0.8+
            }
            catch (Exception ex)
            {
                using (TextWriter tw = new StreamWriter(Server.MapPath("~/App_Data/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.ResponseDocument != null)
                    {
                        tw.WriteLine(messageHandler.ResponseDocument.ToString());
                    }
                    tw.Flush();
                    tw.Close();
                }
                return(Content(""));
            }
        }
示例#17
0
        public async Task <string> index()
        {
            PostModel postModel = TypeChange.UrlToEntities <PostModel>(Request.QueryString.Value);

            if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, appConfig.WeiXin.Token))
            {
                return("参数错误!");
            }
            else
            {
                Request.EnableBuffering();

                using (var reader = new StreamReader(Request.Body, encoding: Encoding.UTF8))
                {
                    var body = await reader.ReadToEndAsync();

                    var    xml          = TypeChange.XmlToDict(body);
                    String toUserName   = xml.GetValueOrDefault("ToUserName");
                    String fromUserName = xml.GetValueOrDefault("FromUserName");
                    String msgType      = xml.GetValueOrDefault("MsgType");
                    String content      = xml.GetValueOrDefault("Content");
                    String eventType    = xml.GetValueOrDefault("Event");
                    String eventKey     = xml.GetValueOrDefault("EventKey");
                    String ticket       = xml.GetValueOrDefault("Ticket");
                    await weiXin.saveLog(new WxQuestLogEntity
                    {
                        id           = await SequenceRepository.GetNextID <WxQuestLogEntity>(),
                        toUserName   = toUserName,
                        fromUserName = fromUserName,
                        msgType      = msgType,
                        content      = content,
                        eventType    = eventType,
                        eventKey     = eventKey,
                        ticket       = ticket,
                    });

                    if (MessageUtil.MESSAGE_EVENT.Equals(msgType))
                    {
                        switch (eventType.ToLower())
                        {
                        case "subscribe":     //订阅
                            if (!string.IsNullOrEmpty(fromUserName))
                            {
                                var userinfo = Helper.WeiChat.Utility.GetUserInfo(fromUserName);
                                await weiXin.saveUser(userinfo, new List <string> {
                                    "nickname", "headimgurl", "subscribe", "subscribe_time", "remark", "groupid", "tagidListStr", "subscribe_scene", "qr_scene", "qr_scene_str"
                                });
                            }
                            break;

                        case "unsubscribe":     //取消订阅
                            var unsubscribeUser = new WxUserEntity()
                            {
                                subscribe      = 0,
                                openid         = fromUserName,
                                subscribe_time = Helper.DataTimeHelper.getDateLongTimestamp(DateTime.Now)
                            };
                            await weiXin.saveUser(unsubscribeUser, new List <string> {
                                "subscribe", "subscribe_time"
                            });

                            break;

                        case "click":     //点击事件
                            String replay = "";
                            switch (eventKey)
                            {
                            case MessageUtil.CLICK_DOWNURL:
                                replay = MessageUtil.downloadApp();
                                break;

                            case MessageUtil.CLICK_ETC_INSTALL:
                                replay = MessageUtil.etcInstallPlace();
                                break;

                            case MessageUtil.CLICK_GetMoney:
                                replay = MessageUtil.etcGetMoney(fromUserName);
                                break;
                            }
                            string message = MessageUtil.initText(toUserName, fromUserName, replay);
                            return(message);

                        case "view":     //url类型
                            break;
                        }
                    }

                    // Do some processing with body…
                    // Reset the request body stream position so the next middleware can read it
                    Request.Body.Position = 0;
                    return("");
                }
            }
        }
示例#18
0
 public CustomMessageHandler(XDocument requestDocument, PostModel postModel = null, int maxRecordCount = 0, DeveloperInfo developerInfo = null) : base(requestDocument, postModel, maxRecordCount, developerInfo)
 {
 }
示例#19
0
 public CustomMessageHandler(RequestMessageBase requestMessageBase, PostModel postModel = null, int maxRecordCount = 0, DeveloperInfo developerInfo = null) : base(requestMessageBase, postModel, maxRecordCount, developerInfo)
 {
 }
示例#20
0
 public CustomMessageHandler(Stream inputStream, PostModel postModel = null, int maxRecordCount = 0, DeveloperInfo developerInfo = null) : base(inputStream, postModel, maxRecordCount, developerInfo)
 {
     base.CurrentMessageContext.ExpireMinutes = 10;
 }
示例#21
0
        public PostModel GetByPostId(int id)
        {
            var model = new PostModel();

            //Convert slugId to Int and Find Post
            var postId = Convert.ToInt32(id);
            var post   = _postService.GetById(postId);

            //BreadCrumb
            model.categoryId   = _categoryService.GetById(post.categoryId).id;
            model.categoryName = _categoryService.GetById(post.categoryId).name;

            var argument = _argumentService.GetById(post.argumentId);

            if (argument != null)
            {
                model.argumentName = argument.name;

                model.breadcrumb.Add(new breadcrumbs()
                {
                    name = model.categoryName,
                    slug = _slugService.GetById(_categoryService.GetById(model.categoryId).slugId).name
                });

                model.breadcrumb.Add(new breadcrumbs()
                {
                    name = model.argumentName,
                    slug = _slugService.GetById(_argumentService.GetById(post.argumentId).slugId).name
                });

                model.breadcrumb.Add(new breadcrumbs()
                {
                    name = post.title,
                    slug = _slugService.GetById(_postService.GetById(postId).slugId).name
                });
            }
            else
            {
                model.breadcrumb.Add(new breadcrumbs()
                {
                    name = model.categoryName,
                    slug = _slugService.GetById(_categoryService.GetById(model.categoryId).slugId).name
                });

                model.breadcrumb.Add(new breadcrumbs()
                {
                    name = post.title,
                    slug = _slugService.GetById(_postService.GetById(postId).slugId).name
                });
            }

            //SEO
            ViewBag.description = Regex.Replace(post.testo, "<.*?>", string.Empty).Substring(0, 255);

            //Post data
            model.id         = post.id;
            model.argumentId = post.argumentId;
            model.coverImage = _photoService.GetById(post.PhotoId).path;
            model.title      = post.title;
            model.subtitle   = post.subtitle;
            model.testo      = post.testo;
            model.albumId    = post.albumId;

            ViewBag.title    = post.title;
            ViewBag.subtitle = post.subtitle;


            //Related Post
            var realtedPosts = _postService.GetByCategoryId(post.categoryId);

            foreach (var relatedPost in realtedPosts)
            {
                model.realtedPost.Add(new ArgumentDisplay()
                {
                    id       = relatedPost.id,
                    title    = relatedPost.title,
                    subtitle = relatedPost.subtitle,
                    slug     = _slugService.GetById(relatedPost.slugId).name
                });
            }

            //Related argument
            var relatedArguments = _argumentService.GetByCategoryId(post.categoryId);

            foreach (var relatedArgument in relatedArguments)
            {
                model.realtedArgument.Add(new ArgumentDisplay()
                {
                    id         = relatedArgument.id,
                    title      = relatedArgument.name,
                    nOfElement = _postService.GetByArgumentId(relatedArgument.id).Count,
                    slug       = _slugService.GetById(relatedArgument.slugId).name
                });
            }

            //Album
            var album = _albumService.GetById(post.albumId);

            if (album != null)
            {
                var imageIds = album.idImmagini.Split('|');
                foreach (var imageId in imageIds)
                {
                    if (!string.IsNullOrEmpty(imageId))
                    {
                        model.album.Add(_photoService.GetById(Convert.ToInt32(imageId)).path);
                    }
                }

                var videoIds = album.idVideo.Split('|');
                foreach (var videoId in videoIds)
                {
                    if (!string.IsNullOrEmpty(videoId))
                    {
                        model.album.Add(_videoService.GetById(Convert.ToInt32(videoId)).path);
                    }
                }
            }

            var totalReview = _reviewService.GetByPostId(post.id).Count;

            model.sectionName          = "Reviews/";
            model.reviewData.pageSize  = 10;
            model.reviewData.pageTotal = Math.Ceiling((double)totalReview / 10);
            model.reviewData.reviews   = _reviewService.GetByPostId(post.id);

            return(model);
        }
示例#22
0
 /// <summary>
 /// Gets the short URL for this blog post
 /// </summary>
 /// <param name="post">Blog post</param>
 /// <returns>The short URL</returns>
 private string ShortUrl(PostModel post)
 {
     return(Url.Action("ShortUrl", "Blog", new { alias = _urlShortener.Shorten(post) }, Request.Scheme));
 }
示例#23
0
        public ActionResult Post(PostModel postModel)
        {
            var maxRecordCount = 10;

            postModel.Token          = Token;
            postModel.EncodingAESKey = EncodingAESKey;
            postModel.CorpId         = CorpId;


            #region 用于生产环境测试原始数据
            //var ms = new MemoryStream();
            //Request.InputStream.CopyTo(ms);
            //ms.Seek(0, SeekOrigin.Begin);

            //var sr = new StreamReader(ms);
            //var xml = sr.ReadToEnd();
            //var doc = XDocument.Parse(xml);
            //doc.Save(Server.GetMapPath("~/App_Data/TestWork.log"));
            //return null;
            #endregion

            //自定义MessageHandler,对微信请求的详细判断操作都在这里面。
            var messageHandler = new WorkCustomMessageHandler(Request.GetRequestMemoryStream(), postModel, maxRecordCount);

            if (messageHandler.RequestMessage == null)
            {
                //验证不通过或接受信息有错误
            }

            try
            {
                //测试时可开启此记录,帮助跟踪数据,使用前请确保App_Data文件夹存在,且有读写权限。
                messageHandler.RequestDocument.Save(Server.GetMapPath("~/App_Data/Work/" + DateTime.Now.Ticks + "_Request_" + messageHandler.RequestMessage.FromUserName + ".txt"));
                //执行微信处理过程
                messageHandler.Execute();
                //测试时可开启,帮助跟踪数据
                messageHandler.ResponseDocument.Save(Server.GetMapPath("~/App_Data/Work/" + DateTime.Now.Ticks + "_Response_" + messageHandler.ResponseMessage.ToUserName + ".txt"));
                messageHandler.FinalResponseDocument.Save(Server.GetMapPath("~/App_Data/Work/" + DateTime.Now.Ticks + "_FinalResponse_" + messageHandler.ResponseMessage.ToUserName + ".txt"));

                //自动返回加密后结果
                return(new FixWeixinBugWeixinResult(messageHandler));//为了解决官方微信5.0软件换行bug暂时添加的方法,平时用下面一个方法即可
            }
            catch (Exception ex)
            {
                using (TextWriter tw = new StreamWriter(Server.GetMapPath("~/App_Data/Work_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(""));
            }
        }
示例#24
0
        public ActionResult Post(PostModel postModel)
        {
            postModel.Token = WeixinConfig.Token;
            //postModel.EncodingAESKey = WeixinConfig.EncodingAESKey;
            postModel.AppId = WeixinConfig.AppID;

            var ent = "";

            if (!BasicAPI.CheckSignature(postModel.Signature, postModel.Timestamp, postModel.Nonce, WeixinConfig.Token, out ent))
            {
                return(Content("参数错误!"));
            }

            var           encryptMsg = string.Empty;
            WeixinMessage message    = null;
            var           safeMode   = Request.QueryString.Get("encrypt_type") == "aes";

            using (var streamReader = new StreamReader(Request.InputStream))
            {
                var decryptMsg = string.Empty;
                var msg        = streamReader.ReadToEnd();

                #region 解密
                if (safeMode)
                {
                    var msg_signature = Request.QueryString.Get("msg_signature");
                    var wxBizMsgCrypt = new WXBizMsgCrypt(WeixinConfig.Token, WeixinConfig.EncodingAESKey, WeixinConfig.AppID);
                    var ret           = wxBizMsgCrypt.DecryptMsg(msg_signature, postModel.Timestamp, postModel.Nonce, msg, ref decryptMsg);
                    if (ret != 0)//解密失败
                    {
                        //TODO:开发者解密失败的业务处理逻辑
                        Log.Instence.LogWriteLine(string.Format("decrypt message return {0}, request body {1}", ret, msg));
                    }
                }
                else
                {
                    decryptMsg = msg;
                }
                #endregion

                message = AcceptMessageAPI.Parse(decryptMsg);
            }

            var response = new WeixinExecutor().Execute(message);

            #region 加密
            if (safeMode)
            {
                var msg_signature = Request.QueryString.Get("msg_signature");
                var wxBizMsgCrypt = new WXBizMsgCrypt(WeixinConfig.Token, WeixinConfig.EncodingAESKey, WeixinConfig.AppID);
                var ret           = wxBizMsgCrypt.EncryptMsg(response, postModel.Timestamp, postModel.Nonce, ref encryptMsg);
                if (ret != 0)//加密失败
                {
                    //TODO:开发者加密失败的业务处理逻辑
                    Log.Instence.LogWriteLine(string.Format("encrypt message return {0}, response body {1}", ret, response));
                }
            }
            else
            {
                encryptMsg = response;
            }
            #endregion
            return(new ContentResult
            {
                Content = encryptMsg,
                ContentType = "text/xml",
                ContentEncoding = System.Text.UTF8Encoding.UTF8
            });
        }
 public async Task Create(PostModel model)
 {
     await PostRepository.Create(model.ToEntity());
 }
示例#26
0
        //<?xml version="1.0" encoding="utf-8"?>
        //<xml>
        //  <ToUserName><![CDATA[gh_a96a4a619366]]></ToUserName>
        //  <FromUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></FromUserName>
        //  <CreateTime>1357986928</CreateTime>
        //  <MsgType><![CDATA[text]]></MsgType>
        //  <Content><![CDATA[中文]]></Content>
        //  <MsgId>5832509444155992350</MsgId>
        //</xml>

        /// <summary>
        /// 获取XDocument转换后的IRequestMessageBase实例。
        /// 如果MsgType不存在,抛出UnknownRequestMsgTypeException异常
        /// </summary>
        /// <returns></returns>
        public static IRequestMessageBase GetRequestEntity(XDocument doc, PostModel postModel = null)
        {
            RequestMessageBase requestMessage = null;
            RequestMsgType     msgType;

            try
            {
                msgType = MsgTypeHelper.GetRequestMsgType(doc);
                switch (msgType)
                {
                case RequestMsgType.Text:
                    requestMessage = new RequestMessageText();
                    break;

                case RequestMsgType.Location:
                    requestMessage = new RequestMessageLocation();
                    break;

                case RequestMsgType.Image:
                    requestMessage = new RequestMessageImage();
                    break;

                case RequestMsgType.Voice:
                    requestMessage = new RequestMessageVoice();
                    break;

                case RequestMsgType.Video:
                    requestMessage = new RequestMessageVideo();
                    break;

                case RequestMsgType.Link:
                    requestMessage = new RequestMessageLink();
                    break;

                case RequestMsgType.Event:
                    //判断Event类型
                    switch (doc.Root.Element("Event").Value.ToUpper())
                    {
                    case "ENTER":        //进入会话
                        requestMessage = new RequestMessageEvent_Enter();
                        break;

                    case "LOCATION":        //地理位置
                        requestMessage = new RequestMessageEvent_Location();
                        break;

                    case "SUBSCRIBE":        //订阅(关注)
                        requestMessage = new RequestMessageEvent_Subscribe();
                        break;

                    case "UNSUBSCRIBE":        //取消订阅(关注)
                        requestMessage = new RequestMessageEvent_Unsubscribe();
                        break;

                    case "CLICK":        //菜单点击
                        requestMessage = new RequestMessageEvent_Click();
                        break;

                    case "SCAN":        //二维码扫描
                        requestMessage = new RequestMessageEvent_Scan();
                        break;

                    case "VIEW":        //URL跳转
                        requestMessage = new RequestMessageEvent_View();
                        break;

                    case "MASSSENDJOBFINISH":
                        requestMessage = new RequestMessageEvent_MassSendJobFinish();
                        break;

                    case "SCANCODE_PUSH":        //扫码推事件(scancode_push)
                        requestMessage = new RequestMessageEvent_Scancode_Push();
                        break;

                    case "SCANCODE_WAITMSG":        //扫码推事件且弹出“消息接收中”提示框(scancode_waitmsg)
                        requestMessage = new RequestMessageEvent_Scancode_Waitmsg();
                        break;

                    case "PIC_SYSPHOTO":        //弹出系统拍照发图(pic_sysphoto)
                        requestMessage = new RequestMessageEvent_Pic_Sysphoto();
                        break;

                    case "PIC_PHOTO_OR_ALBUM":        //弹出拍照或者相册发图(pic_photo_or_album)
                        requestMessage = new RequestMessageEvent_Pic_Photo_Or_Album();
                        break;

                    case "PIC_WEIXIN":        //弹出微信相册发图器(pic_weixin)
                        requestMessage = new RequestMessageEvent_Pic_Weixin();
                        break;

                    case "LOCATION_SELECT":        //弹出地理位置选择器(location_select)
                        requestMessage = new RequestMessageEvent_Location_Select();
                        break;

                    default:        //其他意外类型(也可以选择抛出异常)
                        requestMessage = new RequestMessageEventBase();
                        break;
                    }
                    break;

                default:
                    throw new UnknownRequestMsgTypeException(string.Format("MsgType:{0} 在RequestMessageFactory中没有对应的处理程序!", msgType), new ArgumentOutOfRangeException());    //为了能够对类型变动最大程度容错(如微信目前还可以对公众账号suscribe等未知类型,但API没有开放),建议在使用的时候catch这个异常
                }
                EntityHelper.FillEntityWithXml(requestMessage, doc);
            }
            catch (ArgumentException ex)
            {
                throw new WeixinException(string.Format("RequestMessage转换出错!可能是MsgType不存在!,XML:{0}", doc.ToString()), ex);
            }
            return(requestMessage);
        }
示例#27
0
 public CustomMessageHandlers(XDocument requestDoc, PostModel postModel = null, int maxRecordCount = 0)
     : base(requestDoc, postModel, maxRecordCount)
 {
 }
 public CustomThirdPartyMessageHandler(Stream inputStream, PostModel encryptPostModel)
     : base(inputStream, encryptPostModel)
 {
 }
示例#29
0
 public CustomMessageHandler(Stream inputStream, PostModel postModel, int maxRecordCount = 0)
     : base(inputStream, postModel, maxRecordCount)
 {
 }
示例#30
0
        public ActionResult EditPost(string id)
        {
            PostModel model = db.PostModel.Find(id);

            return(PartialView("PopUpPartial", model));
        }
示例#31
0
        public ActionResult Post(PostModel postModel)
        {
            if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token))
            {
                return(Content("参数错误!"));
            }

            postModel.Token          = Token;          //根据自己后台的设置保持一致
            postModel.EncodingAESKey = EncodingAESKey; //根据自己后台的设置保持一致
            postModel.AppId          = WxOpenAppId;    //根据自己后台的设置保持一致(必须提供)

            //v4.2.2之后的版本,可以设置每个人上下文消息储存的最大数量,防止内存占用过多,如果该参数小于等于0,则不限制
            var maxRecordCount = 10;

            var logPath = ServerUtility.ContentRootMapPath(string.Format("~/App_Data/WxOpen/{0}/", SystemTime.Now.ToString("yyyy-MM-dd")));

            if (!Directory.Exists(logPath))
            {
                Directory.CreateDirectory(logPath);
            }

            //自定义MessageHandler,对微信请求的详细判断操作都在这里面。
            var messageHandler = new CustomWxOpenMessageHandler(Request.GetRequestMemoryStream(), postModel, maxRecordCount);


            try
            {
                /* 如果需要添加消息去重功能,只需打开OmitRepeatedMessage功能,SDK会自动处理。
                 * 收到重复消息通常是因为微信服务器没有及时收到响应,会持续发送2-5条不等的相同内容的RequestMessage*/
                messageHandler.OmitRepeatedMessage = true;

                //测试时可开启此记录,帮助跟踪数据,使用前请确保App_Data文件夹存在,且有读写权限。
                messageHandler.SaveRequestMessageLog();  //记录 Request 日志(可选)

                messageHandler.Execute();                //执行微信处理过程(关键)

                messageHandler.SaveResponseMessageLog(); //记录 Response 日志(可选)

                //return Content(messageHandler.ResponseDocument.ToString());//v0.7-
                return(new FixWeixinBugWeixinResult(messageHandler)); //为了解决官方微信5.0软件换行bug暂时添加的方法,平时用下面一个方法即可
                                                                      //return new WeixinResult(messageHandler);//v0.8+
            }
            catch (Exception ex)
            {
                using (TextWriter tw = new StreamWriter(ServerUtility.ContentRootMapPath("~/App_Data/Error_WxOpen_" + _getRandomFileName() + ".txt")))
                {
                    tw.WriteLine("ExecptionMessage:" + ex.Message);
                    tw.WriteLine(ex.Source);
                    tw.WriteLine(ex.StackTrace);
                    //tw.WriteLine("InnerExecptionMessage:" + ex.InnerException.Message);

                    if (messageHandler.ResponseDocument != null)
                    {
                        tw.WriteLine(messageHandler.ResponseDocument.ToString());
                    }

                    if (ex.InnerException != null)
                    {
                        tw.WriteLine("========= InnerException =========");
                        tw.WriteLine(ex.InnerException.Message);
                        tw.WriteLine(ex.InnerException.Source);
                        tw.WriteLine(ex.InnerException.StackTrace);
                    }

                    tw.Flush();
                    tw.Close();
                }
                return(Content(""));
            }
        }
        public IHttpActionResult PutPost(int id, PostModel post)
        {
            // Validate the request
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != post.PostID)
            {
                return BadRequest();
            }

            // Get the DB post, update it according to the input PostModel object,
            //   and then update the DB post in the database
            var dbPost = _postRepository.GetByID(id);
            if (dbPost == null)
            {
                return NotFound();
            }
            dbPost.Update(post);
            _postRepository.Update(dbPost);

            // Save database changes
            try
            {
                _unitOfWork.Commit();
            }
            catch (DBConcurrencyException e)
            {
                if (!PostExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw new Exception("Unable to update the post in the database", e);
                }
            }
            return StatusCode(HttpStatusCode.NoContent);
        }
示例#33
0
 public WechatService(Stream inputStream, PostModel postModel, int maxRecordCount = 0)
     : base(inputStream, postModel, maxRecordCount)
 {
 }
示例#34
0
 public string PostIn([FromBody] PostModel model)
 {
     return(model.Name);
 }
示例#35
0
 public static async Task<DataModel.Issue> PostIssueAsync(String access_code, String Uri, PostModel.Issue issue)
 {
     Object message = await PostAsync(access_code, Uri, issue, typeof(DataModel.Issue));
     return (DataModel.Issue)message;
 }
示例#36
0
        public ActionResult Post(PostModel postModel)
        {
            if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token))
            {
                return(Content("参数错误!"));
            }

            postModel.Token          = Token;
            postModel.EncodingAESKey = EncodingAESKey;
            postModel.AppId          = AppId;

            //v4.2.2之后的版本,可以设置每个人上下文消息储存的最大数量,防止内存占用过多,如果该参数小于等于0,则不限制
            var maxRecordCount = 10;

            var logPath = Server.MapPath(string.Format("~/App_Data/MP/{0}/", DateTime.Now.ToString("yyyy-MM-dd")));

            if (!Directory.Exists(logPath))
            {
                Directory.CreateDirectory(logPath);
            }

            //自定义MessageHandler,对微信请求的详细判断操作都在这里面。
            var messageHandler = new CustomMessageHandler(Request.InputStream, postModel, maxRecordCount);

            try
            {
                //测试时可开启此记录,帮助跟踪数据,使用前请确保App_Data文件夹存在,且有读写权限。
                messageHandler.RequestDocument.Save(Path.Combine(logPath, string.Format("{0}_Request_{1}.txt", DateTime.Now.Ticks, messageHandler.RequestMessage.FromUserName)));
                if (messageHandler.UsingEcryptMessage)
                {
                    messageHandler.EcryptRequestDocument.Save(Path.Combine(logPath, string.Format("{0}_Request_Ecrypt_{1}.txt", DateTime.Now.Ticks, messageHandler.RequestMessage.FromUserName)));
                }

                /* 如果需要添加消息去重功能,只需打开OmitRepeatedMessage功能,SDK会自动处理。
                 * 收到重复消息通常是因为微信服务器没有及时收到响应,会持续发送2-5条不等的相同内容的RequestMessage*/
                messageHandler.OmitRepeatedMessage = true;


                //执行微信处理过程
                messageHandler.Execute();

                //测试时可开启,帮助跟踪数据

                //if (messageHandler.ResponseDocument == null)
                //{
                //    throw new Exception(messageHandler.RequestDocument.ToString());
                //}

                if (messageHandler.ResponseDocument != null)
                {
                    messageHandler.ResponseDocument.Save(Path.Combine(logPath, string.Format("{0}_Response_{1}.txt", DateTime.Now.Ticks, messageHandler.RequestMessage.FromUserName)));
                }

                if (messageHandler.UsingEcryptMessage)
                {
                    //记录加密后的响应信息
                    messageHandler.FinalResponseDocument.Save(Path.Combine(logPath, string.Format("{0}_Response_Final_{1}.txt", DateTime.Now.Ticks, messageHandler.RequestMessage.FromUserName)));
                }

                //return new FixWeixinBugWeixinResult(messageHandler);//为了解决官方微信5.0软件换行bug暂时添加的方法,平时用下面一个方法即可
                return(new WeixinResult(messageHandler));//v0.8+
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                return(Content(""));
            }
        }
示例#37
0
        // GET api/posts/id
        public HttpResponseMessage GetSinglePostById(string sessionKey, int postId)
        {
            var responseMessage = this.PerformOperation(() =>
            {
                this.ValidateSessionKey(sessionKey);

                var context = new BlogDbContext();
                var user = context.Users
                    .FirstOrDefault(u => u.SessionKey == sessionKey);

                if (user == null)
                {
                    throw new ServerErrorException(
                        "Invalid or expired session",
                        HttpStatusCode.BadRequest);
                }

                var post = context.Posts
                    .FirstOrDefault(p => p.Id == postId);

                if (post == null)
                {
                    throw new ServerErrorException(
                        "Post does not exist",
                        HttpStatusCode.BadRequest);
                }

                var postModel = new PostModel()
                {
                    Id = post.Id,
                    PostedBy = post.User.DisplayName,
                    PostDate = post.PostDate,
                    Title = post.Title,
                    Text = post.Text,
                    Tags = post.Tags.Select(tag => tag.Name),
                    Comments = post.Comments.Select(comment =>
                            new CommentModel()
                            {
                                Text = comment.Text,
                                CommentedBy = comment.User.DisplayName,
                                PostDate = comment.PostDate
                            }
                        )
                };

                return Request.CreateResponse(
                    HttpStatusCode.OK,
                    postModel);
            });

            return responseMessage;
        }
        public ActionResult PostProject(HttpPostedFileBase Avatar, List <string> feature, USER us, HttpPostedFileBase Image, PostModel model, PROPERTY property, List <HttpPostedFileBase> images)
        {
            if (ModelState.IsValid)
            {
                string avatar = "";
                if (Avatar.ContentLength > 0)
                {
                    var filename = Path.GetFileName(Avatar.FileName);
                    var path     = Path.Combine(Server.MapPath("~/img"), filename);
                    Avatar.SaveAs(path);
                    avatar = filename;
                }
                //string image = "";
                //if (Image.ContentLength > 0)
                //{
                //    var filename = Path.GetFileName(Image.FileName);
                //    var path = Path.Combine(Server.MapPath("~/img"), filename);
                //    Image.SaveAs(path);
                //    image = filename;
                //}
                var pro = new PROPERTY();
                pro.PropertyName    = model.PropertyName;
                pro.PropertyType_ID = model.PropertyType_ID;
                pro.Avatar          = avatar;
                //pro.Images = image;
                //pro.DISTRICT = model.DISTRICT;
                //add feture
                //var fetur = new PROPERTY_FEATURE();
                //if (featuree != null)
                //{
                //    foreach (string fetus in featuree)
                //    {

                //        // fetur.Property_ID = qqq.ID;
                //        fetur.Feature_ID = db.FEATUREs.SingleOrDefault(x => x.FeatureName == fetus).ID;
                //        fetur.Property_ID = property.ID;
                //        //fetur.Feature_ID = property.ID;
                //        db.PROPERTY_FEATURE.Add(fetur);

                //    }
                //}
                var fetur = new PROPERTY_FEATURE();
                if (feature != null)
                {
                    foreach (string fetus in feature)
                    {
                        //PROPERTY_FEATURE profeature = new PROPERTY_FEATURE();
                        // fetur.Property_ID = qqq.ID;
                        fetur.Feature_ID  = db.FEATUREs.SingleOrDefault(x => x.FeatureName == fetus).ID;
                        fetur.Property_ID = property.ID;
                        //fetur.Feature_ID = 1;
                        db.PROPERTY_FEATURE.Add(fetur);
                    }
                }
                pro.District_ID = model.District_ID;
                pro.Street_ID   = model.Street_ID;
                pro.Ward_ID     = model.Ward_ID;
                //pro.STREET = model.STREET;
                pro.Price        = model.Price;
                pro.Area         = model.Area;
                pro.BathRoom     = model.BathRoom;
                pro.BedRoom      = model.BedRoom;
                pro.PackingPlace = model.PackingPlace;
                pro.Content      = model.Content;
                //pro.UserID = model.UserID;
                pro.UnitPrice = model.UnitPrice;
                //pr.Email = us.Email;
                //pr.Phone = us.Phone;
                //pro.Create_post = DateTime.Now.;

                pro.Status_ID  = model.Status_ID;
                pro.Updated_at = DateTime.Now;
                pro.Created_at = DateTime.Now;
                pro.UserID     = (int)Session["UserID"];
                db.PROPERTY.Add(pro);
                db.SaveChanges();
                //ViewBag.Success = "Đăng ký thành công";
                model = new PostModel();
                return(RedirectToAction("List", "Project"));
            }
            else
            {
                ModelState.AddModelError("", "Đăng bài không thành công, vui lòng kiểm tra lại các trường thông tin của bạn");
            }
            return(View(model));
        }
示例#39
0
 /// <summary>
 /// 构造MessageHandler
 /// </summary>
 /// <param name="inputStream">请求消息流</param>
 /// <param name="postModel">PostModel</param>
 /// <param name="maxRecordCount">单个用户上下文消息列表储存的最大长度</param>
 /// <param name="developerInfo">微微嗨开发者信息,如果不为空,则优先请求云端应用商店的资源</param>
 public MessageHandler(Stream inputStream, PostModel postModel = null, int maxRecordCount = 0, DeveloperInfo developerInfo = null)
     : base(inputStream, maxRecordCount, postModel)
 {
     DeveloperInfo = developerInfo;
 }
        public async Task <IActionResult> PostAsync([FromBody] PostModel model, CancellationToken cancellationToken)
        {
            var idModel = await fSender.Send(new PostRequest(model), cancellationToken);

            return(CreatedAtRoute(_GetClientRoute, new { id = idModel.Id.ToString() }, idModel));
        }
示例#41
0
文件: UI.cs 项目: cdie/Piranha.vNext
		/// <summary>
		/// Renders the permalink for the given post.
		/// </summary>
		/// <param name="post">The post</param>
		/// <returns>The generated permalink</returns>
		public static IHtmlString Permalink(PostModel post) {
			return new HtmlString(helper.Permalink(post));
		}
示例#42
0
        public string PostUrl(string url, PostModel model)
        {
            var data = model.body;

            return(postXMLData(url, data));
        }
        public IHttpActionResult PostPost(PostModel post)
        {
            // Validate request
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            // Check that the corresponding blog exists
            if (!_blogRepository.Any(b => b.BlogID == post.BlogID))
            {
                throw new Exception("Unable to add the post to the database, as it does not correspond to a blog");
            }

            //Set up new Post object, populated from input post
            Post dbPost = new Post();
            dbPost.Update(post);

            // Add the new Post object to the DB
            _postRepository.Add(dbPost);

            // Save the changes in the database
            try
            {
                _unitOfWork.Commit();
            }
            catch (Exception e)
            {
                throw new Exception("Unable to add the post to the database", e);
            }

            // Set post ID in PostModel object with the ID
            //  that was set in the DB post after db.SaveChanges
            post.PostID = dbPost.PostID;
            return CreatedAtRoute("DefaultApi", new { id = post.PostID }, post);
        }
示例#44
0
        public ActionResult Post(string signature, string timestamp, string nonce, string openid, string encrypt_type, string msg_signature)
        {
            //StringBuilder log = new StringBuilder();
            LogService.AnyLog("WeChatWebHook", $"WxApi\tPost In");//{DateTime.Now.ToString("HH:mm:ss.fffffff")}\t

            PostModel postModel = new PostModel()
            {
                Token          = WechatMpSettings.Default.Token, //根据自己后台的设置保持一致
                Signature      = signature,
                Timestamp      = timestamp,
                Nonce          = nonce,
                AppId          = WechatMpSettings.Default.AppId,
                EncodingAESKey = WechatMpSettings.Default.EncodingAESKey,
                Msg_Signature  = msg_signature,
            };

            WechatCustomService.Default.Encrypt_type = encrypt_type;


            try
            {
                //加密异常
                if (encrypt_type == "aes" && string.IsNullOrEmpty(postModel.EncodingAESKey))
                {
                    return(Content("公从号接口有异常,请通过其它途径解决您的问题,并反馈此消息"));
                }
                if (encrypt_type == "aes" && wxcrypt == null)
                {
                    wxcrypt = new WXBizMsgCrypt(postModel.Token, postModel.EncodingAESKey, postModel.AppId);
                    WechatCustomService.Default.WxCrypt = wxcrypt;
                }

                if (!CheckSignature.Check(signature, postModel))
                {
                    return(Content("参数错误!"));
                }

                String PostXml = Request.GetBodyString();
                //解密信息
                if (encrypt_type == "aes")
                {
                    var    aeskey = WechatMpSettings.Default.EncodingAESKey;
                    string detext = null;
                    var    res    = wxcrypt.DecryptMsg(postModel.Msg_Signature, postModel.Timestamp, postModel.Nonce, PostXml, ref detext);
                    //Console.WriteLine($"{res} detext({postModel.Token},{postModel.EncodingAESKey},{postModel.AppId},{postModel.Msg_Signature}, {postModel.Timestamp}, {postModel.Nonce},{PostXml})>{detext}");
                    PostXml = detext;
                }

                WechatResponse wxsponse  = new WechatResponse(Request, PostXml);
                var            botsponse = wxsponse.Rebot();
                LogService.AnyLog("WeChatWebHook", "响应源数据", $"{botsponse.Content}");
                //加密信息
                if (encrypt_type == "aes")
                {
                    var    rTimeStamp = DateTime.Now.GetTimestamp10();
                    var    rNonce     = RandomString.BuildRndString(16);
                    string restr      = null;
                    var    rb         = wxcrypt.EncryptMsg(botsponse.Content, rTimeStamp + "", rNonce, ref restr);
                    if (rb == 0)
                    {
                        botsponse.Content = restr;
                    }
                    else
                    {
                        $"{rb} EncryptMsg".WriteErrorLine();
                    }
                }
                LogService.AnyLog("WeChatWebHook", "响应密数据", $"{botsponse.Content}");
                return(botsponse);
            }
            catch (Exception ex)
            {
                #region 异常处理
                LogService.AnyLog("WeChatWebHook", $"{ex.Message}");
                LogService.Exception(ex);
                return(Content(""));

                #endregion
            }
            finally
            {
                LogService.AnyLog("WeChatWebHook", $"WxApi\tPost Out");
            }
        }