JeffreySu/WeiXinMPSDK · error · MessageHandlerException
微信公众号不支持 IRequestMessageVideo 请求类型
Error message
微信公众号不支持 IRequestMessageVideo 请求类型
What it means
WxOpenMessageEntityEnlightener.NewRequestMessageVideo unconditionally throws MessageHandlerException. Mini Program (WxOpen) message handling does not support video request messages, which belong to the MP (公众号) protocol, so the entity factory refuses to build them.
Solutions
- Handle video messages only with an MP MessageHandler, not WxOpenMessageHandler.
- Guard the call site: check the message type before requesting the video entity.
- Override/replace the entity-enlightener usage in your derived handler if you need custom behavior for video messages.
Example fix
// before
var videoMsg = enlightener.NewRequestMessageVideo();
// after
var videoMsg = requestMessage is IRequestMessageVideo
? (IRequestMessageVideo)requestMessage
: enlightener.NewRequestMessageText(); Defensive patterns
Strategy: type-guard
Validate before calling
if (requestMessage is IRequestMessageVideo) { /* route to MP handler */ return; } Type guard
static bool IsVideoRequest(IRequestMessage m) => m is IRequestMessageVideo;
Try / catch
try
{
var videoMsg = enlightener.NewRequestMessageVideo();
}
catch (MessageHandlerException)
{
// video requests are not supported in WxOpen; fall back to text handling
} Prevention
- Configure the WeChat callback URL per platform so video messages reach the MP endpoint.
- Never share one entity-factory call across MP and WxOpen handlers.
- Add unit tests asserting MP-only types throw in WxOpen, so behavior is documented.
When it happens
Trigger: Calling NewRequestMessageVideo() on the WxOpen entity enlightener, e.g. when the WxOpenMessageHandler encounters a video-type XML message or when application code explicitly requests a video request entity in WxOpen context.
Common situations: Porting MP handler code to WxOpen; unit tests iterating all request entity types; configuring a WxOpen handler expecting the same message surface as a 公众号 handler.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- 微信公众号不支持 IRequestMessageShortVideo 请求类型
- 微信公众号不支持 IRequestMessageVoice 请求类型
- 微信公众号不支持 IResponseMessageVideo 响应类型
- MsgType: 在RequestMessageFactory中没有对应的处理程序!
- 微信公众号不支持 IRequestMessageFile 请求类型
AI-assisted analysis of JeffreySu/WeiXinMPSDK@be573f6f94 (2026-09-12).
Data as JSON: /api/errors/dd1f1c45fdd5a06a.
Report an issue: GitHub.
Appendix: source
Thrown at src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageEntityEnlightener.cs:54
public override IRequestMessageLocation NewRequestMessageLocation()
{
throw new MessageHandlerException("微信公众号不支持 IRequestMessageLocation 请求类型");
}
public override IRequestMessageShortVideo NewRequestMessageShortVideo()
{
throw new MessageHandlerException("微信公众号不支持 IRequestMessageShortVideo 请求类型");
}
public override IRequestMessageText NewRequestMessageText()
{
return new RequestMessageText();
}
public override IRequestMessageVideo NewRequestMessageVideo()
{
throw new MessageHandlerException("微信公众号不支持 IRequestMessageVideo 请求类型");
}
public override IRequestMessageVoice NewRequestMessageVoice()
{
throw new MessageHandlerException("微信公众号不支持 IRequestMessageVoice 请求类型");
}
public override IResponseMessageImage NewResponseMessageImage()
{
throw new MessageHandlerException("微信公众号不支持 IResponseMessageImage 响应类型");
}
public override IResponseMessageMpNews NewResponseMessageMpNews()
{
throw new MessageHandlerException("微信公众号不支持 IResponseMessageMpNews 响应类型");
}
public override IResponseMessageMusic NewResponseMessageMusic()View on GitHub (pinned to be573f6f94)