MessageHandlerTMC, TRequest, TResponse 类 |
Senparc.Weixin SDK 官方教程《微信开发深度解析》已出版,支持中国开源事业,请【购买正版】!
《微信公众号+小程序》视频课程已经上线,【点击这里】学习!
NeuChar(纽插)已经上线,为开发者提供一站式跨平台管理枢纽,并可将应用入驻到 NeuChar 应用商店!新功能正在不断增加中,快来使用吧! https://www.neuchar.com
在线动态微信接口 Swagger WebApi 文档: https://weixin.senparc.com:8039
命名空间: Senparc.NeuChar.MessageHandlers
public abstract class MessageHandler<TMC, TRequest, TResponse> : IMessageHandler<TRequest, TResponse>, IMessageHandlerDocument, IMessageHandlerBase, IMessageHandlerEnlightener, IMessageHandlerNeuralNodes, IMessageHandlerWithContext<TMC, TRequest, TResponse> where TMC : class, new(), Object, IMessageContext<TRequest, TResponse> where TRequest : class, IRequestMessageBase where TResponse : class, IResponseMessageBase
MessageHandlerTMC, TRequest, TResponse 类型公开以下成员。
名称 | 说明 | |
---|---|---|
MessageHandlerTMC, TRequest, TResponse(Stream, IEncryptPostModel, Int32, Boolean, IServiceProvider) | 初始化 MessageHandlerTMC, TRequest, TResponse 类的一个新实例 | |
MessageHandlerTMC, TRequest, TResponse(XDocument, IEncryptPostModel, Int32, Boolean, IServiceProvider) |
使用postDataDocument的构造函数
| |
MessageHandlerTMC, TRequest, TResponse(RequestMessageBase, IEncryptPostModel, Int32, Boolean, IServiceProvider) | 使用 requestMessageBase 的构造函数(请勿在生产环境中使用!) 此构造函数仅提供给具体的类库进行测试使用例如 Senparc.NeuChar.Work。请勿在生产环境中使用! |
名称 | 说明 | |
---|---|---|
ApiEnlightener |
请求和响应消息有差别化的定义
| |
CancelExecute |
取消执行Execute()方法。一般在OnExecuting()中用于临时阻止执行Execute()。
默认为False。
如果在执行OnExecuting()执行前设为True,则所有OnExecuting()、Execute()、OnExecuted()代码都不会被执行。
如果在执行OnExecuting()执行过程中设为True,则后续Execute()及OnExecuted()代码不会被执行。
建议在设为True的时候,给ResponseMessage赋值,以返回友好信息。
| |
CurrentAppDataNode |
当前 App 订阅信息
| |
CurrentMessageContext |
已过时。
当前用户消息上下文(注意:次数据不会被缓存,每次都会重新从缓存读取。
TODO:可创建一个临时缓存对象,但需要考虑同步问题
| |
CurrentMessageHandlerNode |
默认 MessageHandlerNode 对象
| |
DefaultMessageHandlerAsyncEvent | 注意:当调用同步方法 Execute() 时,此参数会被强制设置为:SelfSynicMethod! MessageHandler 事件异步方法的默认调用方法(在没有override的情况下)。默认值:DefaultDefaultResponseMessageAsync。 默认参数设置为 DefaultResponseMessageAsync,目的是为了确保默认状态下不会执行意料以外的代码, 因此,如果需要在异步方法中调用同名的同步方法,请手动将此参数设置为SelfSynicMethod。 | |
EcryptRequestDocument |
原始的加密请求(如果不加密则为null)
| |
ExecuteStatTime | ||
FinalResponseDocument |
最后返回的ResponseDocument。
如果是Senparc.NeuChar.QY,则应当和ResponseDocument一致;如果是Senparc.NeuChar.QY,则应当在ResponseDocument基础上进行加密
| |
GlobalMessageContext |
全局消息上下文
| |
MessageEntityEnlightener |
请求和响应消息有差别化的定义
| |
MessageIsRepeated |
消息是否已经被去重
| |
OmitRepeatedMessage |
忽略重复发送的同一条消息(通常因为微信服务器没有收到及时的响应)
| |
OmitRepeatedMessageFunc |
动态去重判断委托,仅当返回值为false时,不使用消息去重功能
| |
OnlyAllowEncryptMessage |
当平台同时兼容明文消息和加密消息时,只允许处理加密消息(不允许处理明文消息),默认为 False
| |
OpenId |
发送者用户名(OpenId)
| |
PostModel | ||
RecordResponseMessageSync |
是否同步向 MessageContext 写入 ResponseMessage,默认为否,将使用队列写入,提升响应速度
| |
RequestDocument |
在构造函数中转换得到原始XML数据
| |
RequestMessage |
请求实体
| |
ResponseDocument |
根据ResponseMessageBase获得转换后的ResponseDocument
注意:这里每次请求都会根据当前的ResponseMessageBase生成一次,如需重用此数据,建议使用缓存或局部变量
| |
ResponseMessage |
响应实体
正常情况下只有当执行Execute()方法后才可能有值。
也可以结合Cancel,提前给ResponseMessage赋值。
| |
ServiceProvider |
ServiceProvide
| |
SpecialDeduplicationAction |
每个具体框架内额外的去重条件。返回是否已经去重(true:需要去重,false:不需要去重)
| |
TextResponseMessage |
文字类型返回消息
| |
UsedMessageAgent |
是否使用了MessageAgent代理
| |
UserName | 已过时。 | |
UsingCompatibilityModelEncryptMessage |
是否使用了兼容模式加密信息
| |
UsingEncryptMessage |
是否使用了加密消息格式
| |
WeixinOpenId |
已过时。
发送者用户名(OpenId)
|
名称 | 说明 | |
---|---|---|
BuildResponseMessageAsync | ||
CheckMessageRepeat |
处理消息去重
| |
CommonInitialize |
构造函数公用的初始化方法
| |
CreateResponseMessageTR |
根据当前的 RequestMessage 创建指定类型(RT)的 ResponseMessage
| |
Execute |
已过时。
执行微信请求(如果没有被 CancelExecute=true 中断) 注意:此方法仍然会优先执行异步重写方法(如:OnTextRequest()),只在未重写对应事件的异步方法时(如: OnTextRequestAsync()),尝试查找同步重写方法 | |
ExecuteAsync | ||
GetCurrentMessageContext |
当前用户消息上下文(注意:次数据不会被缓存,每次都会重新从缓存读取。
| |
GetLogPath |
获取日志保存地址
| |
GetUnsafeMessageContext |
延迟载入的上下文对象,存放在内存中。注意:使用本地内存缓存时,会每次都花心,等效于 GetCurrentMessageContext();使用分布式缓存时,不能保证此对象是实时的,如需获取实时对象,请使用 GetCurrentMessageContext() 方法
| |
Init |
初始化,获取RequestDocument。(必须要完成 RequestMessage 数据赋值).
Init中需要对上下文添加当前消息(如果使用上下文);以及判断消息的加密情况,对解密信息进行解密
| |
MarkRepeatedMessage |
标记为已重复消息
| |
OnExecuted |
已过时。
在 Execute() 之后运行(如果没有被 CancelExecute=true 中断)
| |
OnExecutedAsync | ||
OnExecuting |
已过时。
在 Execute() 之前运行,可以使用 CancelExecute=true 中断后续 Execute() 和 OnExecuted() 方法的执行
| |
OnExecutingAsync | ||
OnNeuCharRequest | 已过时。 | |
OnNeuCharRequestAsync |
NeuChar 请求
| |
SaveRequestMessageLog |
保存请求信息
测试时可开启此记录,帮助跟踪数据,使用前请确保App_Data文件夹存在,且有读写权限。 | |
SaveResponseMessageLog |
保存响应信息
测试时可开启此记录,帮助跟踪数据,使用前请确保App_Data文件夹存在,且有读写权限。 |