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文件不需要修改只要注意调用的路径。另外两个文件根据你要实现的功能进行对应的改写。
![](https://box.kancloud.cn/6b4177a02c60c54ac1af872eed4ca137_405x100.png)