{"id":28948,"date":"2024-11-25T08:09:20","date_gmt":"2024-11-25T00:09:20","guid":{"rendered":"https:\/\/fwq.ai\/blog\/28948\/"},"modified":"2024-11-25T08:09:20","modified_gmt":"2024-11-25T00:09:20","slug":"%e8%af%a6%e8%a7%a3-net%e5%bc%80%e5%8f%91%e5%be%ae%e4%bf%a1%e5%85%ac%e4%bc%97%e5%8f%b7%e4%b9%8b%e5%85%ac%e4%bc%97%e5%8f%b7%e6%b6%88%e6%81%af%e5%a4%84%e7%90%86%e6%96%b9%e6%b3%95","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/28948\/","title":{"rendered":"\u8be6\u89e3.NET\u5f00\u53d1\u5fae\u4fe1\u516c\u4f17\u53f7\u4e4b\u516c\u4f17\u53f7\u6d88\u606f\u5904\u7406\u65b9\u6cd5"},"content":{"rendered":"<p>\u672c\u6587\u7ed9\u5927\u5bb6\u8bb2\u8ff0\u7684\u662f\u5728.net\u5fae\u4fe1\u516c\u4f17\u53f7\u5f00\u53d1\u4e2d\u7684\u516c\u4f17\u53f7\u7684\u6d88\u606f\u5904\u7406\u7684\u76f8\u5173\u5185\u5bb9\uff0c\u975e\u5e38\u8be6\u7ec6\uff0c\u6709\u9700\u8981\u7684\u5c0f\u4f19\u4f34\u53ef\u4ee5\u53c2\u8003\u4e0b\u3002<\/p>\n<p>\u4e00.\u524d\u8a00<\/p>\n<p>&nbsp; \u5fae\u4fe1\u516c\u4f17\u5e73\u53f0\u7684\u6d88\u606f\u5904\u7406\u8fd8\u662f\u6bd4\u8f83\u5b8c\u5584\u7684\uff0c\u6709\u6700\u57fa\u672c\u7684\u6587\u672c\u6d88\u606f\uff0c\u5230\u56fe\u6587\u6d88\u606f\uff0c\u5230\u6d88\u606f\uff0c\u8bed\u97f3\u6d88\u606f\uff0c\u6d88\u606f\uff0c\u97f3\u4e50\u6d88\u606f\u5176\u57fa\u672c\u539f\u7406\u90fd\u662f\u4e00\u6837\u7684\uff0c\u53ea\u4e0d\u8fc7\u6240post\u7684\u6570\u636e\u6709\u6240\u5dee\u522b\uff0c\u5728\u5904\u7406\u6d88\u606f\u4e4b\u524d\uff0c\u6211\u4eec\u8981\u8ba4\u771f\u9605\u8bfb\uff0c\u5b98\u65b9\u7ed9\u6211\u4eec\u7684\u6587\u6863\uff1ahttp:\/\/mp.weixin.qq.com\/wiki\/14\/89b871b5466b19b3efa4ada8e577d45e.html\u3002\u9996\u5148\u6211\u4eec\u4ece\u6700\u57fa\u672c\u7684\u6587\u672c\u6d88\u606f\u5904\u7406\u5f00\u59cb\u3002<\/p>\n<p><\/p>\n<pre>&lt;xml&gt;&lt;tousername&gt;&lt;\/tousername&gt;&lt;fromusername&gt;&lt;\/fromusername&gt;&lt;createtime&gt;12345678&lt;\/createtime&gt;&lt;msgtype&gt;&lt;\/msgtype&gt;&lt;content&gt;&lt;\/content&gt;&lt;\/xml&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>&nbsp; \u6211\u4eec\u53ef\u4ee5\u770b\u5230\u8fd9\u662f\u6d88\u606f\u5904\u7406\u7684\u4e00\u4e2a\u6700\u57fa\u672c\u7684\u6a21\u5f0f\uff0c\u6709\u53d1\u9001\u8005\uff0c\u63a5\u53d7\u8005\uff0c\u521b\u5efa\u65f6\u95f4\uff0c\u7c7b\u578b\uff0c\u5185\u5bb9\u7b49\u7b49\u3002<\/p>\n<p>\u9996\u5148\u6211\u4eec\u6765\u521b\u5efa\u4e00\u4e2a\u6d88\u606f\u5904\u7406\u7684\u7c7b\uff0c\u8fd9\u4e2a\u7c7b\u7528\u6765\u6355\u83b7\uff0c\u6240\u6709\u7684\u6d88\u606f\u8bf7\u6c42\uff0c\u6839\u636e\u4e0d\u540c\u7684\u6d88\u606f\u6765\u5904\u7406\u4e0d\u540c\u7684\u6d88\u606f\u56de\u590d\u3002<\/p>\n<p><\/p>\n<pre>public&nbsp;class&nbsp;WeiXinService\r\n&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;TOKEN\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;const&nbsp;string&nbsp;TOKEN&nbsp;=&nbsp;\"finder\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u7b7e\u540d\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;const&nbsp;string&nbsp;SIGNATURE&nbsp;=&nbsp;\"signature\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u65f6\u95f4\u6233\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;const&nbsp;string&nbsp;TIMESTAMP&nbsp;=&nbsp;\"timestamp\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u968f\u673a\u6570\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;const&nbsp;string&nbsp;NONCE&nbsp;=&nbsp;\"nonce\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u968f\u673a\u5b57\u7b26\u4e32\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;const&nbsp;string&nbsp;ECHOSTR&nbsp;=&nbsp;\"echostr\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;HttpRequest&nbsp;Request&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u6784\u9020\u51fd\u6570\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;WeiXinService(HttpRequest&nbsp;request)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Request&nbsp;=&nbsp;request;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u5904\u7406\u8bf7\u6c42\uff0c\u4ea7\u751f\u54cd\u5e94\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;Response()\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;method&nbsp;=&nbsp;Request.HttpMethod.ToUpper();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u9a8c\u8bc1\u7b7e\u540d\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(method&nbsp;==&nbsp;\"GET\")\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(CheckSignature())\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Request.QueryString[ECHOSTR];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;\"error\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u5904\u7406\u6d88\u606f\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(method&nbsp;==&nbsp;\"POST\")\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ResponseMsg();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;\"\u65e0\u6cd5\u5904\u7406\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u5904\u7406\u8bf7\u6c42\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;string&nbsp;ResponseMsg()\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;requestXml&nbsp;=&nbsp;CommonWeiXin.ReadRequest(this.Request);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IHandler&nbsp;handler&nbsp;=&nbsp;HandlerFactory.CreateHandler(requestXml);\r\n&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(handler&nbsp;!=&nbsp;null)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;handler.HandleRequest();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;string.Empty;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u68c0\u67e5\u7b7e\u540d\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;bool&nbsp;CheckSignature()\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;signature&nbsp;=&nbsp;Request.QueryString[SIGNATURE];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;timestamp&nbsp;=&nbsp;Request.QueryString[TIMESTAMP];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;nonce&nbsp;=&nbsp;Request.QueryString[NONCE];\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;string&gt;&nbsp;list&nbsp;=&nbsp;new&nbsp;List&lt;string&gt;();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.Add(TOKEN);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.Add(timestamp);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.Add(nonce);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u6392\u5e8f\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.Sort();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u62fc\u4e32\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;input&nbsp;=&nbsp;string.Empty;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(var&nbsp;item&nbsp;in&nbsp;list)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input&nbsp;+=&nbsp;item;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u52a0\u5bc6\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;new_signature&nbsp;=&nbsp;SecurityUtility.SHA1Encrypt(input);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u9a8c\u8bc1\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(new_signature&nbsp;==&nbsp;signature)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;}&lt;\/string&gt;&lt;\/string&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u5728\u6765\u770b\u770b\u6211\u4eec\u7684\u9996\u5148\u662f\u5982\u4f55\u6355\u83b7\u6d88\u606f\u7684\u3002\u9996\u9875Default.ashx\u7684\u4ee3\u7801\u5982\u4e0b<\/p>\n<p><\/p>\n<pre>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;ProcessRequest(HttpContext&nbsp;context)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.Response.ContentType&nbsp;=&nbsp;\"text\/html\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;postString&nbsp;=&nbsp;string.Empty;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(HttpContext.Current.Request.HttpMethod.ToUpper()&nbsp;==&nbsp;\"POST\")\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u7531\u5fae\u4fe1\u670d\u52a1\u63a5\u6536\u8bf7\u6c42\uff0c\u5177\u4f53\u5904\u7406\u8bf7\u6c42\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WeiXinService&nbsp;wxService&nbsp;=&nbsp;new&nbsp;WeiXinService(context.Request);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;responseMsg&nbsp;=&nbsp;wxService.Response();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.Response.Clear();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.Response.Charset&nbsp;=&nbsp;\"UTF-8\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.Response.Write(responseMsg);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.Response.End();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;token&nbsp;=&nbsp;\"wei2414201\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(string.IsNullOrEmpty(token))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;echoString&nbsp;=&nbsp;HttpContext.Current.Request.QueryString[\"echoStr\"];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;signature&nbsp;=&nbsp;HttpContext.Current.Request.QueryString[\"signature\"];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;timestamp&nbsp;=&nbsp;HttpContext.Current.Request.QueryString[\"timestamp\"];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;nonce&nbsp;=&nbsp;HttpContext.Current.Request.QueryString[\"nonce\"];\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!string.IsNullOrEmpty(echoString))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.Write(echoString);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.End();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u4ece\u4e0a\u9762\u7684\u4ee3\u7801\u4e2d\u6211\u4eec\u53ef\u4ee5\u770b\u5230WeiXinService.cs\u7c7b\u4e2d\u7684\u6d88\u606f\u76f8\u5e94\u81f3\u5173\u91cd\u8981\u3002<\/p>\n<p><\/p>\n<pre>&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u5904\u7406\u8bf7\u6c42\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;string&nbsp;ResponseMsg()\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;requestXml&nbsp;=&nbsp;CommonWeiXin.ReadRequest(this.Request);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IHandler&nbsp;handler&nbsp;=&nbsp;HandlerFactory.CreateHandler(requestXml);\r\n&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(handler&nbsp;!=&nbsp;null)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;handler.HandleRequest();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;string.Empty;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>IHandler\u662f\u4e00\u4e2a\u6d88\u606f\u5904\u7406\uff0c\u5176\u4e0b\u9762\u6709EventHandler\uff0cTextHandler\u5904\u7406\u7c7b\u5b9e\u73b0\u8fd9\u4e2a\u63a5\u53e3\u3002\u4ee3\u7801\u5982\u4e0b<\/p>\n<p><\/p>\n<pre>&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;\/\/\/&nbsp;\u5904\u7406\u63a5\u53e3\r\n&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;public&nbsp;interface&nbsp;IHandler\r\n&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u5904\u7406\u8bf7\u6c42\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;HandleRequest();\r\n&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>EventHandler<\/p>\n<p><\/p>\n<pre>class&nbsp;EventHandler&nbsp;:&nbsp;IHandler\r\n&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u8bf7\u6c42\u7684xml\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;string&nbsp;RequestXml&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u6784\u9020\u51fd\u6570\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;EventHandler(string&nbsp;requestXml)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.RequestXml&nbsp;=&nbsp;requestXml;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u5904\u7406\u8bf7\u6c42\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;HandleRequest()\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;response&nbsp;=&nbsp;string.Empty;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EventMessage&nbsp;em&nbsp;=&nbsp;EventMessage.LoadFromXml(RequestXml);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(em.Event.Equals(\"subscribe\",&nbsp;StringComparison.OrdinalIgnoreCase))\/\/\u7528\u6765\u5224\u65ad\u662f\u4e0d\u662f\u9996\u6b21\u5173\u6ce8\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PicTextMessage&nbsp;tm&nbsp;=&nbsp;new&nbsp;PicTextMessage();\/\/\u6211\u81ea\u5df1\u521b\u5efa\u7684\u4e00\u4e2a\u56fe\u6587\u6d88\u606f\u5904\u7406\u7c7b\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tm.ToUserName&nbsp;=&nbsp;em.FromUserName;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tm.FromUserName&nbsp;=&nbsp;em.ToUserName;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tm.CreateTime&nbsp;=&nbsp;CommonWeiXin.GetNowTime();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;=&nbsp;tm.GenerateContent();\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;response;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>TextHandler<\/p>\n<p><\/p>\n<pre>&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;\/\/\/&nbsp;\u6587\u672c\u4fe1\u606f\u5904\u7406\u7c7b\r\n&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;public&nbsp;class&nbsp;TextHandler&nbsp;:&nbsp;IHandler\r\n&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;openid&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;access_token&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u8bf7\u6c42\u7684XML\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;string&nbsp;RequestXml&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u6784\u9020\u51fd\u6570\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\u8bf7\u6c42\u7684xml\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;TextHandler(string&nbsp;requestXml)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.RequestXml&nbsp;=&nbsp;requestXml;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u5904\u7406\u8bf7\u6c42\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;HandleRequest()\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;response&nbsp;=&nbsp;string.Empty;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextMessage&nbsp;tm&nbsp;=&nbsp;TextMessage.LoadFromXml(RequestXml);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;content&nbsp;=&nbsp;tm.Content.Trim();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(string.IsNullOrEmpty(content))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;=&nbsp;\"\u60a8\u4ec0\u4e48\u90fd\u6ca1\u8f93\u5165\uff0c\u6ca1\u6cd5\u5e2e\u60a8\u554a\u3002\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;username&nbsp;=&nbsp;System.Configuration.ConfigurationManager.AppSettings[\"weixinid\"].ToString();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AccessToken&nbsp;token&nbsp;=&nbsp;AccessToken.Get(username);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;access_token&nbsp;=&nbsp;token.access_token;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;openid&nbsp;=&nbsp;tm.FromUserName;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;=&nbsp;HandleOther(content);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tm.Content&nbsp;=&nbsp;response;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u8fdb\u884c\u53d1\u9001\u8005\u3001\u63a5\u6536\u8005\u8f6c\u6362\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;temp&nbsp;=&nbsp;tm.ToUserName;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tm.ToUserName&nbsp;=&nbsp;tm.FromUserName;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tm.FromUserName&nbsp;=&nbsp;temp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;=&nbsp;tm.GenerateContent();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;response;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u5904\u7406\u5176\u4ed6\u6d88\u606f\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;string&nbsp;HandleOther(string&nbsp;requestContent)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;response&nbsp;=&nbsp;string.Empty;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(requestContent.Contains(\"\u4f60\u597d\")&nbsp;||&nbsp;requestContent.Contains(\"\u60a8\u597d\"))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;=&nbsp;\"\u60a8\u4e5f\u597d~\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;if&nbsp;(requestContent.Contains(\"openid\")&nbsp;||&nbsp;requestContent.Contains(\"id\")&nbsp;||&nbsp;requestContent.Contains(\"ID\"))\/\/\u7528\u6765\u5339\u914d\u7528\u6237\u8f93\u5165\u7684\u5173\u952e\u5b57\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;=&nbsp;\"\u4f60\u7684Openid:&nbsp;\"+openid;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(requestContent.Contains(\"token\")&nbsp;||&nbsp;requestContent.Contains(\"access_token\"))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;=&nbsp;\"\u4f60\u7684access_token:&nbsp;\"&nbsp;+&nbsp;access_token;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;=&nbsp;\"\u8bd5\u8bd5\u5176\u4ed6\u5173\u952e\u5b57\u5427\u3002\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;response;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>HandlerFactory<\/p>\n<p><\/p>\n<pre>&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;\/\/\/&nbsp;\u5904\u7406\u5668\u5de5\u5382\u7c7b\r\n&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;public&nbsp;class&nbsp;HandlerFactory\r\n&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u521b\u5efa\u5904\u7406\u5668\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\u8bf7\u6c42\u7684xml\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;IHandler\u5bf9\u8c61&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;IHandler&nbsp;CreateHandler(string&nbsp;requestXml)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IHandler&nbsp;handler&nbsp;=&nbsp;null;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!string.IsNullOrEmpty(requestXml))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u89e3\u6790\u6570\u636e\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XmlDocument&nbsp;doc&nbsp;=&nbsp;new&nbsp;System.Xml.XmlDocument();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doc.LoadXml(requestXml);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XmlNode&nbsp;node&nbsp;=&nbsp;doc.SelectSingleNode(\"\/xml\/MsgType\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(node&nbsp;!=&nbsp;null)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XmlCDataSection&nbsp;section&nbsp;=&nbsp;node.FirstChild&nbsp;as&nbsp;XmlCDataSection;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(section&nbsp;!=&nbsp;null)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;msgType&nbsp;=&nbsp;section.Value;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(msgType)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;\"text\":\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handler&nbsp;=&nbsp;new&nbsp;TextHandler(requestXml);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;\"event\":\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handler&nbsp;=&nbsp;new&nbsp;EventHandler(requestXml);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;handler;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>&nbsp;\u5728\u8fd9\u91cc\u57fa\u672c\u7684\u4e00\u4e9b\u7c7b\u5df2\u7ecf\u5b8c\u6210\u4e86\uff0c\u73b0\u5728\u6211\u4eec\u6765\u5b8c\u6210\uff0c\u5173\u6ce8\u6211\u4eec\u7684\u5fae\u4fe1\u516c\u4f17\u53f7\uff0c\u6211\u4eec\u5c31\u53d1\u9001\u4e00\u6761\u56fe\u6587\u6d88\u606f\uff0c\u540c\u65f6\u8f93\u5165\u6211\u4eec\u7684\u4e00\u4e9b\u5173\u952e\u5b57\uff0c\u8fd4\u56de\u4e00\u4e9b\u6d88\u606f\uff0c\u6bd4\u5982\u8f93\u5165id\u8fd4\u56de\u7528\u6237\u7684openid\u7b49\u7b49\u3002<\/p>\n<p>\u4e8c.PicTextMessage<\/p>\n<p><\/p>\n<pre>public&nbsp;class&nbsp;PicTextMessage&nbsp;:&nbsp;Message\r\n&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u6a21\u677f\u9759\u6001\u5b57\u6bb5\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;string&nbsp;m_Template;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;PicTextMessage()\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.MsgType&nbsp;=&nbsp;\"news\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u4ecexml\u6570\u636e\u52a0\u8f7d\u6587\u672c\u6d88\u606f\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;PicTextMessage&nbsp;LoadFromXml(string&nbsp;xml)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PicTextMessage&nbsp;tm&nbsp;=&nbsp;null;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!string.IsNullOrEmpty(xml))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XElement&nbsp;element&nbsp;=&nbsp;XElement.Parse(xml);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(element&nbsp;!=&nbsp;null)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tm&nbsp;=&nbsp;new&nbsp;PicTextMessage();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tm.FromUserName&nbsp;=&nbsp;element.Element(CommonWeiXin.FROM_USERNAME).Value;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tm.ToUserName&nbsp;=&nbsp;element.Element(CommonWeiXin.TO_USERNAME).Value;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tm.CreateTime&nbsp;=&nbsp;element.Element(CommonWeiXin.CREATE_TIME).Value;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;tm;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u6a21\u677f\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;override&nbsp;string&nbsp;Template\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(string.IsNullOrEmpty(m_Template))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoadTemplate();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;m_Template;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u751f\u6210\u5185\u5bb9\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;override&nbsp;string&nbsp;GenerateContent()\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.CreateTime&nbsp;=&nbsp;CommonWeiXin.GetNowTime();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;str=&nbsp;string.Format(this.Template,&nbsp;this.ToUserName,&nbsp;this.FromUserName,&nbsp;this.CreateTime);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;str;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u52a0\u8f7d\u6a21\u677f\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;void&nbsp;LoadTemplate()\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Template=&nbsp;@\"&lt;xml&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tousername&gt;&lt;\/tousername&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;fromusername&gt;&lt;\/fromusername&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;createtime&gt;{2}&lt;\/createtime&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;msgtype&gt;&lt;\/msgtype&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;articlecount&gt;1&lt;\/articlecount&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;articles&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;item&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;&lt;\/title&gt;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;&lt;\/description&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;picurl&gt;&lt;\/picurl&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;&lt;\/url&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/item&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/articles&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/xml&gt;&nbsp;\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u6700\u540e\u6211\u4eec\u7684\u6548\u679c\u5982\u4e0b\u6240\u793a\uff1b<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/000\/013\/da14f9c3992f64d8ead60a66b9ff9324-0.png\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u8be6\u89e3.NET\u5f00\u53d1\u5fae\u4fe1\u516c\u4f17\u53f7\u4e4b\u516c\u4f17\u53f7\u6d88\u606f\u5904\u7406\u65b9\u6cd5\u63d2\u56fe\" alt=\"\u8be6\u89e3.NET\u5f00\u53d1\u5fae\u4fe1\u516c\u4f17\u53f7\u4e4b\u516c\u4f17\u53f7\u6d88\u606f\u5904\u7406\u65b9\u6cd5\u63d2\u56fe\" \/><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/000\/013\/bc9456d4df647b88bf4c65b72de583b5-1.png\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u8be6\u89e3.NET\u5f00\u53d1\u5fae\u4fe1\u516c\u4f17\u53f7\u4e4b\u516c\u4f17\u53f7\u6d88\u606f\u5904\u7406\u65b9\u6cd5\u63d2\u56fe1\" alt=\"\u8be6\u89e3.NET\u5f00\u53d1\u5fae\u4fe1\u516c\u4f17\u53f7\u4e4b\u516c\u4f17\u53f7\u6d88\u606f\u5904\u7406\u65b9\u6cd5\u63d2\u56fe1\" \/><\/p>\n<p>\u4ee5\u4e0a\u6240\u8ff0\u5c31\u662f\u672c\u6587\u7684\u5168\u90e8\u5185\u5bb9\u4e86\uff0c\u5e0c\u671b\u5927\u5bb6\u80fd\u591f\u559c\u6b22<\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u8be6\u89e3.NET\u5f00\u53d1\u5fae\u4fe1\u516c\u4f17\u53f7\u4e4b\u516c\u4f17\u53f7\u6d88\u606f\u5904\u7406\u65b9\u6cd5\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u6587\u7ed9\u5927\u5bb6\u8bb2\u8ff0\u7684\u662f\u5728.net\u5fae\u4fe1\u516c\u4f17\u53f7\u5f00\u53d1\u4e2d\u7684\u516c\u4f17\u53f7\u7684\u6d88\u606f\u5904\u7406\u7684\u76f8\u5173\u5185\u5bb9\uff0c\u975e\u5e38\u8be6\u7ec6\uff0c\u6709\u9700\u8981\u7684\u5c0f\u4f19\u4f34\u53ef\u4ee5\u53c2\u8003\u4e0b\u3002 \u4e00.\u524d\u8a00 &nbsp; \u5fae\u4fe1\u516c\u4f17\u5e73\u53f0\u7684\u6d88\u606f\u5904\u7406\u8fd8\u662f\u6bd4\u8f83\u5b8c\u5584\u7684\uff0c\u6709\u6700\u57fa\u672c\u7684\u6587\u672c\u6d88\u606f\uff0c\u5230\u56fe\u6587\u6d88\u606f\uff0c\u5230\u6d88\u606f\uff0c\u8bed\u97f3\u6d88\u606f\uff0c\u6d88\u606f\uff0c\u97f3\u4e50\u6d88\u606f\u5176\u57fa\u672c\u539f\u7406\u90fd\u662f\u4e00\u6837\u7684\uff0c\u53ea\u4e0d\u8fc7\u6240post\u7684\u6570\u636e\u6709\u6240\u5dee\u522b\uff0c\u5728\u5904\u7406\u6d88\u606f\u4e4b\u524d\uff0c\u6211\u4eec\u8981\u8ba4\u771f\u9605\u8bfb\uff0c\u5b98\u65b9\u7ed9\u6211\u4eec\u7684\u6587\u6863\uff1ahttp:\/\/mp.weixin.qq.com\/wiki\/14\/89b871b5466b19b3efa4ada8e577d45e.html\u3002\u9996\u5148\u6211\u4eec\u4ece\u6700\u57fa\u672c\u7684\u6587\u672c\u6d88\u606f\u5904\u7406\u5f00\u59cb\u3002 &lt;xml&gt;&lt;tousername&gt;&lt;\/tousername&gt;&lt;fromusername&gt;&lt;\/fromusername&gt;&lt;createtime&gt;12345678&lt;\/createtime&gt;&lt;msgtype&gt;&lt;\/msgtype&gt;&lt;content&gt;&lt;\/content&gt;&lt;\/xml&gt; \u767b\u5f55\u540e\u590d\u5236 &nbsp; \u6211\u4eec\u53ef\u4ee5\u770b\u5230\u8fd9\u662f\u6d88\u606f\u5904\u7406\u7684\u4e00\u4e2a\u6700\u57fa\u672c\u7684\u6a21\u5f0f\uff0c\u6709\u53d1\u9001\u8005\uff0c\u63a5\u53d7\u8005\uff0c\u521b\u5efa\u65f6\u95f4\uff0c\u7c7b\u578b\uff0c\u5185\u5bb9\u7b49\u7b49\u3002 \u9996\u5148\u6211\u4eec\u6765\u521b\u5efa\u4e00\u4e2a\u6d88\u606f\u5904\u7406\u7684\u7c7b\uff0c\u8fd9\u4e2a\u7c7b\u7528\u6765\u6355\u83b7\uff0c\u6240\u6709\u7684\u6d88\u606f\u8bf7\u6c42\uff0c\u6839\u636e\u4e0d\u540c\u7684\u6d88\u606f\u6765\u5904\u7406\u4e0d\u540c\u7684\u6d88\u606f\u56de\u590d\u3002 public&nbsp;class&nbsp;WeiXinService &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;TOKEN &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;const&nbsp;string&nbsp;TOKEN&nbsp;=&nbsp;&#8220;finder&#8221;; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u7b7e\u540d &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;const&nbsp;string&nbsp;SIGNATURE&nbsp;=&nbsp;&#8220;signature&#8221;; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u65f6\u95f4\u6233 &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;const&nbsp;string&nbsp;TIMESTAMP&nbsp;=&nbsp;&#8220;timestamp&#8221;; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u968f\u673a\u6570 &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;const&nbsp;string&nbsp;NONCE&nbsp;=&nbsp;&#8220;nonce&#8221;; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u968f\u673a\u5b57\u7b26\u4e32 &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;const&nbsp;string&nbsp;ECHOSTR&nbsp;=&nbsp;&#8220;echostr&#8221;; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;HttpRequest&nbsp;Request&nbsp;{&nbsp;get;&nbsp;set;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u6784\u9020\u51fd\u6570 &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;WeiXinService(HttpRequest&nbsp;request) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Request&nbsp;=&nbsp;request; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u5904\u7406\u8bf7\u6c42\uff0c\u4ea7\u751f\u54cd\u5e94 &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt; &nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;&lt;\/returns&gt; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;Response() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;method&nbsp;=&nbsp;Request.HttpMethod.ToUpper(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u9a8c\u8bc1\u7b7e\u540d &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(method&nbsp;==&nbsp;&#8220;GET&#8221;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(CheckSignature()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-28948","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/28948","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=28948"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/28948\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=28948"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=28948"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=28948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}