JeffreySu/WeiXinMPSDK · error · MessageHandlerException
微信公众号不支持 IRequestMessageShortVideo 请求类型
Error message
微信公众号不支持 IRequestMessageShortVideo 请求类型
What it means
WxOpenMessageEntityEnlightener.NewRequestMessageShortVideo unconditionally throws MessageHandlerException. The WxOpen (WeChat Mini Program) message pipeline does not support short-video request messages, which only exist in the MP (公众号) protocol, so the entity factory refuses to construct them.
Solutions
- Do not request IRequestMessageShortVideo in WxOpen context; handle ShortVideo messages only in an MP (公众号) MessageHandler.
- If you control the call site, branch on request message type before asking the enlightener for an entity.
- If you genuinely need short-video handling, use Senparc.Weixin.MP's MessageHandler for that message instead of WxOpen.
Example fix
// before
var msg = enlightener.NewRequestMessageShortVideo();
// after
IRequestMessage msg = requestMessage is RequestMessageShortVideo
? /* handle in MP handler */ HandleShortVideoInMpHandler(requestMessage)
: enlightener.NewRequestMessageText(); Defensive patterns
Strategy: type-guard
Validate before calling
var isMpOnly = requestMessage is IRequestMessageShortVideo; if (isMpOnly) return; // handle in MP handler, not WxOpen
Type guard
static bool IsMpOnlyRequest(IRequestMessage m) =>
m is IRequestMessageShortVideo or IRequestMessageVideo or IRequestMessageVoice; Try / catch
try
{
var msg = enlightener.NewRequestMessageShortVideo();
}
catch (MessageHandlerException ex)
{
log.Warn("ShortVideo not supported in WxOpen", ex);
fallback = enlightener.NewRequestMessageText();
} Prevention
- Keep MP-only message handling in Senparc.Weixin.MP MessageHandlers, never in WxOpen handlers.
- Pattern-match on IRequestMessage subtypes before requesting entities from the enlightener.
- Write integration tests that replay each message type against the correct platform handler.
When it happens
Trigger: Any code path that calls WxOpenMessageEntityEnlightener.NewRequestMessageShortVideo(), typically the WxOpen message handler trying to materialize a RequestMessageShortVideo entity for an incoming XML message or when third-party code requests an entity via the enlightener/factory.
Common situations: Reusing MP-style message-handling code against a WxOpen handler; tests that enumerate all IRequestMessage types; switching a handler base class from MessageHandler (MP) to WxOpenMessageHandler while still expecting MP entity types.
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
- 微信公众号不支持 IRequestMessageVideo 请求类型
- 微信公众号不支持 IRequestMessageVoice 请求类型
- MsgType: 在RequestMessageFactory中没有对应的处理程序!
- 微信公众号不支持 IRequestMessageFile 请求类型
- 微信公众号不支持 IRequestMessageLink 请求类型
AI-assisted analysis of JeffreySu/WeiXinMPSDK@be573f6f94 (2026-09-12).
Data as JSON: /api/errors/8ba395ee255e469d.
Report an issue: GitHub.
Appendix: source
Thrown at src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageEntityEnlightener.cs:44
public override IRequestMessageImage NewRequestMessageImage()
{
return new RequestMessageImage();
}
public override IRequestMessageLink NewRequestMessageLink()
{
throw new MessageHandlerException("微信公众号不支持 IRequestMessageLink 请求类型");
}
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()View on GitHub (pinned to be573f6f94)