c#/asp.net 微信接入入口文件及關注默認回復
接入界面
~~~
using Senparc.Weixin.MP;
using Senparc.Weixin.MP.Entities;
using Senparc.Weixin.MP.MessageHandlers;
string signature = context.Request["signature"];
string timestamp = context.Request["timestamp"];
string nonce = context.Request["nonce"];
string echostr = context.Request["echostr"];
string Token=NetWing.Common.ConfigHelper.GetValue("Token");
string appid = NetWing.Common.ConfigHelper.GetValue("AppID");
if (context.Request.HttpMethod == "GET")
{
//get method - 僅在微信后臺填寫URL驗證時觸發
if (CheckSignature.Check(signature, timestamp, nonce, Token))
{
WriteContent(echostr,context); //返回隨機字符串則表示驗證通過
}
else
{
WriteContent("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token),context);
}
}
else
{
//判斷Post或其他方式請求
if (!Senparc.Weixin.MP.CheckSignature.Check(signature, timestamp, nonce, Token))
{
WriteContent("參數錯誤!",context);
return;
}
//post method - 當有用戶想公眾賬號發送消息時觸發
var postModel = new Senparc.Weixin.MP.Entities.Request.PostModel()
{
Signature = context.Request.QueryString["signature"],
Msg_Signature = context.Request.QueryString["msg_signature"],
Timestamp = context.Request.QueryString["timestamp"],
Nonce = context.Request.QueryString["nonce"],
//以下保密信息不會(不應該)在網絡上傳播,請注意
Token = Token,
//EncodingAESKey = model.aeskey, //根據自己后臺的設置保持一致
AppId = appid //根據自己后臺的設置保持一致
};
//v4.2.2之后的版本,可以設置每個人上下文消息儲存的最大數量,防止內存占用過多,如果該參數小于等于0,則不限制
//v4.2.2之后的版本,可以設置每個人上下文消息儲存的最大數量,防止內存占用過多,如果該參數小于等于0,則不限制
var maxRecordCount = 0;
//自定義MessageHandler,對微信請求的詳細判斷操作都在這里面。
var messageHandler = new CustomMessageHandler(context.Request.InputStream, postModel, maxRecordCount);
try
{
//執行微信處理過程
//var newRequestMessage = messageHandler.RequestMessage as IRequestMessageEventBase;
//if (newRequestMessage.Event== Senparc.Weixin.MP.Event.scan)//如果是掃碼
//{
// //翼通自己的處理微信消息的方法
// NetWingCMSWeiXin.NetWingMessageHandler(messageHandler);
//}
//else
//{
messageHandler.Execute();
//}
WriteContent(messageHandler.ResponseDocument.ToString(),context);
return;
}
catch (Exception ex)
{
context.Response.Write(ex.Message);
}
finally
{
context.Response.End();
}
}
context.Response.End();
}
private void WriteContent(string str, HttpContext context)
{
context.Response.Output.Write(str);
}
~~~
調用Handler文件夾,其中CustomMessageContext.cs文件不需要修改只要注意調用的路徑。另外兩個文件根據你要實現的功能進行對應的改寫。
