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

MessageHandlerTMC, TRequest, TResponse

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

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

微信请求的集中处理方法 此方法中所有过程,都基于Senparc.NeuChar.基础功能,只为简化代码而设。
微信请求的集中处理方法 此方法中所有过程,都基于Senparc.NeuChar.基础功能,只为简化代码而设。
继承层次
SystemObject
  Senparc.NeuChar.MessageHandlersMessageHandlerTMC, TRequest, TResponse
    Senparc.NeuChar.App.MessageHandlersNeuCharAppMessageHandler
    Senparc.NeuChar.Tests.ContextCustomMessageHandler
    Senparc.Weixin.MP.MessageHandlersMessageHandlerTMC
    Senparc.Weixin.Work.MessageHandlersWorkMessageHandlerTMC
    Senparc.Weixin.WxOpen.MessageHandlersWxOpenMessageHandlerTMC

命名空间:  Senparc.NeuChar.MessageHandlers
程序集:  Senparc.NeuChar (在 Senparc.NeuChar.dll 中) 版本:1.4.400+9276a4a7db0d8fb887fc6634357928e7b33f68fa
语法
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

类型参数

TMC
TRequest
TResponse

MessageHandlerTMC, TRequest, TResponse 类型公开以下成员。

构造函数
属性
  名称说明
公共属性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)
Top
方法
  名称说明
公共方法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文件夹存在,且有读写权限。

Top
扩展方法
  名称说明
公共扩展器方法RequestNeucharResponseMessage
【异步方法】获取 NeuChar 开放平台的ResponseMessge结果
(由 MessageAgent 定义。)
公共扩展器方法RequestNeuCharResponseMessage
获取 NeuChar 开放平台的ResponseMessge结果
(由 MessageAgent 定义。)
公共扩展器方法RequestNeucharResponseMessageAsync
【异步方法】获取 NeuChar 开放平台的ResponseMessge结果
(由 MessageAgent 定义。)
公共扩展器方法RequestNeuCharResponseMessageAsync
【异步方法】获取 NeuChar 开放平台的ResponseMessge结果
(由 MessageAgent 定义。)
公共扩展器方法RequestNeuCharXml
对接 NeuChar 平台,获取Xml结果,使用WeiWeiHiKey对接 WeiWeiHiKey的获取方式请看:
(由 MessageAgent 定义。)
公共扩展器方法RequestNeuCharXmlAsync
【异步方法】对接 NeuChar 平台,获取Xml结果,使用WeiWeiHiKey对接 WeiWeiHiKey的获取方式请看:
(由 MessageAgent 定义。)
公共扩展器方法RequestResponseMessage(IServiceProvider, String, String, Stream, Boolean, Int32)已重载。
获取ResponseMessge结果
(由 MessageAgent 定义。)
公共扩展器方法RequestResponseMessage(IServiceProvider, String, String, String, Boolean, Int32)已重载。
获取ResponseMessge结果
(由 MessageAgent 定义。)
公共扩展器方法RequestResponseMessageAsync(IServiceProvider, String, String, Stream, Boolean, Int32)已重载。
【异步方法】获取ResponseMessge结果
(由 MessageAgent 定义。)
公共扩展器方法RequestResponseMessageAsync(IServiceProvider, String, String, String, Boolean, Int32)已重载。
【异步方法】获取ResponseMessge结果
(由 MessageAgent 定义。)
公共扩展器方法RequestWeiweihiResponseMessage(IServiceProvider, String, XDocument, String, Int32)已重载。
获取 NeuChar 开放平台的ResponseMessge结果
(由 MessageAgent 定义。)
公共扩展器方法RequestWeiweihiResponseMessage(IServiceProvider, String, RequestMessageBase, String, Int32)已重载。
获取 NeuChar 开放平台的ResponseMessge结果
(由 MessageAgent 定义。)
公共扩展器方法RequestXml(IServiceProvider, String, String, String, Boolean, Int32)已重载。
获取Xml结果
(由 MessageAgent 定义。)
公共扩展器方法RequestXml(IServiceProvider, String, String, Stream, Boolean, Boolean, Int32)已重载。
获取Xml结果。
(由 MessageAgent 定义。)
公共扩展器方法RequestXmlAsync(IServiceProvider, String, String, String, Boolean, Int32)已重载。
【异步方法】获取Xml结果
(由 MessageAgent 定义。)
公共扩展器方法RequestXmlAsync(IServiceProvider, String, String, Stream, Boolean, Boolean, Int32)已重载。
【异步方法】获取Xml结果。
(由 MessageAgent 定义。)
公共扩展器方法Serialize
序列化对象
(由 StackExchangeRedisExtensions 定义。)
公共扩展器方法ToHashEntries
Serialize in Redis format
(由 RedisUtils 定义。)
公共扩展器方法ToJson
把数据转换为Json格式(使用Newtonsoft.Json.dll)
(由 ObjectExtensions 定义。)
Top
参见