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

  1. Handle video messages only with an MP MessageHandler, not WxOpenMessageHandler.
  2. Guard the call site: check the message type before requesting the video entity.
  3. 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

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


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)