点击或拖拽改变大小
盛派网络

CustomMessageHandler 类

Senparc.Weixin SDK 官方教程《微信开发深度解析》已出版,支持中国开源事业,请【购买正版】
《微信公众号+小程序》视频课程已经上线,【点击这里】学习!

NeuChar(纽插)已经上线,为开发者提供一站式跨平台管理枢纽,并可将应用入驻到 NeuChar 应用商店!新功能正在不断增加中,快来使用吧! https://www.neuchar.com
在线动态微信接口 Swagger WebApi 文档: https://weixin.senparc.com:8039

继承层次
SystemObject
  Senparc.NeuChar.MessageHandlersMessageHandlerCustomMessageContext, RequestMessageBase, ResponseMessageBase
    Senparc.NeuChar.Tests.ContextCustomMessageHandler

命名空间:  Senparc.NeuChar.Tests.Context
程序集:  Senparc.NeuChar.Tests (在 Senparc.NeuChar.Tests.exe 中) 版本:1.0.0+9276a4a7db0d8fb887fc6634357928e7b33f68fa
语法
public class CustomMessageHandler : MessageHandler<CustomMessageContext, RequestMessageBase, ResponseMessageBase>

CustomMessageHandler 类型公开以下成员。

构造函数
  名称说明
公共方法CustomMessageHandler
初始化 CustomMessageHandler 类的一个新实例
Top
属性
  名称说明
公共属性ApiEnlightener (重写 MessageHandlerTMC, TRequest, TResponseApiEnlightener.)
公共属性CancelExecute
取消执行Execute()方法。一般在OnExecuting()中用于临时阻止执行Execute()。 默认为False。 如果在执行OnExecuting()执行前设为True,则所有OnExecuting()、Execute()、OnExecuted()代码都不会被执行。 如果在执行OnExecuting()执行过程中设为True,则后续Execute()及OnExecuted()代码不会被执行。 建议在设为True的时候,给ResponseMessage赋值,以返回友好信息。
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性CurrentAppDataNode
当前 App 订阅信息
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性CurrentMessageContext 已过时。
当前用户消息上下文(注意:次数据不会被缓存,每次都会重新从缓存读取。 TODO:可创建一个临时缓存对象,但需要考虑同步问题
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性CurrentMessageHandlerNode
默认 MessageHandlerNode 对象
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性DefaultMessageHandlerAsyncEvent

注意:当调用同步方法 Execute() 时,此参数会被强制设置为:SelfSynicMethod!

MessageHandler 事件异步方法的默认调用方法(在没有override的情况下)。默认值:DefaultDefaultResponseMessageAsync。

默认参数设置为 DefaultResponseMessageAsync,目的是为了确保默认状态下不会执行意料以外的代码, 因此,如果需要在异步方法中调用同名的同步方法,请手动将此参数设置为SelfSynicMethod。

(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性EcryptRequestDocument
原始的加密请求(如果不加密则为null)
(继承自 MessageHandlerTMC, TRequest, TResponse。)
受保护的属性ExecuteStatTime (继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性FinalResponseDocument (重写 MessageHandlerTMC, TRequest, TResponseFinalResponseDocument.)
公共属性GlobalMessageContext
全局消息上下文
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性MessageEntityEnlightener (重写 MessageHandlerTMC, TRequest, TResponseMessageEntityEnlightener.)
公共属性MessageIsRepeated
消息是否已经被去重
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性OmitRepeatedMessage
忽略重复发送的同一条消息(通常因为微信服务器没有收到及时的响应)
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性OmitRepeatedMessageFunc
动态去重判断委托,仅当返回值为false时,不使用消息去重功能
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性OnlyAllowEncryptMessage
当平台同时兼容明文消息和加密消息时,只允许处理加密消息(不允许处理明文消息),默认为 False
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性OpenId
发送者用户名(OpenId)
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性PostModel (继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性RecordResponseMessageSync
是否同步向 MessageContext 写入 ResponseMessage,默认为否,将使用队列写入,提升响应速度
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性RequestDocument
在构造函数中转换得到原始XML数据
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性RequestMessage
请求实体
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性ResponseDocument (重写 MessageHandlerTMC, TRequest, TResponseResponseDocument.)
公共属性ResponseMessage
响应实体 正常情况下只有当执行Execute()方法后才可能有值。 也可以结合Cancel,提前给ResponseMessage赋值。
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性ServiceProvider
ServiceProvide
(继承自 MessageHandlerTMC, TRequest, TResponse。)
受保护的属性SpecialDeduplicationAction
每个具体框架内额外的去重条件。返回是否已经去重(true:需要去重,false:不需要去重)
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性TextResponseMessage
文字类型返回消息
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性UsedMessageAgent
是否使用了MessageAgent代理
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性UserName 已过时。
公共属性UsingCompatibilityModelEncryptMessage
是否使用了兼容模式加密信息
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性UsingEncryptMessage
是否使用了加密消息格式
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共属性WeixinOpenId 已过时。
发送者用户名(OpenId)
(继承自 MessageHandlerTMC, TRequest, TResponse。)
Top
方法
  名称说明
公共方法BuildResponseMessageAsync (重写 MessageHandlerTMC, TRequest, TResponseBuildResponseMessageAsync(CancellationToken).)
公共方法CheckMessageRepeat
处理消息去重
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共方法CommonInitialize
构造函数公用的初始化方法
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共方法CreateResponseMessageTR
根据当前的 RequestMessage 创建指定类型(RT)的 ResponseMessage
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共方法Execute 已过时。

执行微信请求(如果没有被 CancelExecute=true 中断)

注意:此方法仍然会优先执行异步重写方法(如:OnTextRequest()),只在未重写对应事件的异步方法时(如: OnTextRequestAsync()),尝试查找同步重写方法

(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共方法ExecuteAsync (继承自 MessageHandlerTMC, TRequest, TResponse。)
公共方法GetCurrentMessageContext
当前用户消息上下文(注意:次数据不会被缓存,每次都会重新从缓存读取。
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共方法GetLogPath
获取日志保存地址
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共方法GetUnsafeMessageContext
延迟载入的上下文对象,存放在内存中。注意:使用本地内存缓存时,会每次都花心,等效于 GetCurrentMessageContext();使用分布式缓存时,不能保证此对象是实时的,如需获取实时对象,请使用 GetCurrentMessageContext() 方法
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共方法Init(XDocument, IEncryptPostModel)
初始化,获取RequestDocument。(必须要完成 RequestMessage 数据赋值). Init中需要对上下文添加当前消息(如果使用上下文);以及判断消息的加密情况,对解密信息进行解密
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共方法Init(XDocument, IEncryptPostModel)
受保护的方法MarkRepeatedMessage
标记为已重复消息
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共方法OnExecuted 已过时。 (重写 MessageHandlerTMC, TRequest, TResponseOnExecuted.)
公共方法OnExecutedAsync (重写 MessageHandlerTMC, TRequest, TResponseOnExecutedAsync(CancellationToken).)
公共方法OnExecuting 已过时。 (重写 MessageHandlerTMC, TRequest, TResponseOnExecuting.)
公共方法OnExecutingAsync (重写 MessageHandlerTMC, TRequest, TResponseOnExecutingAsync(CancellationToken).)
公共方法OnNeuCharRequest 已过时。 (继承自 MessageHandlerTMC, TRequest, TResponse。)
公共方法OnNeuCharRequestAsync
NeuChar 请求
(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共方法SaveRequestMessageLog
保存请求信息

测试时可开启此记录,帮助跟踪数据,使用前请确保App_Data文件夹存在,且有读写权限。

(继承自 MessageHandlerTMC, TRequest, TResponse。)
公共方法SaveResponseMessageLog
保存响应信息

测试时可开启此记录,帮助跟踪数据,使用前请确保App_Data文件夹存在,且有读写权限。

(继承自 MessageHandlerTMC, TRequest, TResponse。)
Top
扩展方法
  名称说明
公共扩展器方法Serialize
序列化对象
(由 StackExchangeRedisExtensions 定义。)
公共扩展器方法ToHashEntries
Serialize in Redis format
(由 RedisUtils 定义。)
公共扩展器方法ToJson
把数据转换为Json格式(使用Newtonsoft.Json.dll)
(由 ObjectExtensions 定义。)
Top
参见