{"record":{"id":"dd1f1c45fdd5a06a","repo":"JeffreySu/WeiXinMPSDK","slug":"irequestmessagevideo","errorCode":null,"errorMessage":"微信公众号不支持 IRequestMessageVideo 请求类型","messagePattern":"微信公众号不支持 IRequestMessageVideo 请求类型","errorType":"exception","errorClass":"MessageHandlerException","httpStatus":null,"severity":"error","filePath":"src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageEntityEnlightener.cs","lineNumber":54,"sourceCode":"\n        public override IRequestMessageLocation NewRequestMessageLocation()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IRequestMessageLocation 请求类型\");\n        }\n\n        public override IRequestMessageShortVideo NewRequestMessageShortVideo()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IRequestMessageShortVideo 请求类型\");\n        }\n\n        public override IRequestMessageText NewRequestMessageText()\n        {\n            return new RequestMessageText();\n        }\n\n        public override IRequestMessageVideo NewRequestMessageVideo()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IRequestMessageVideo 请求类型\");\n        }\n\n        public override IRequestMessageVoice NewRequestMessageVoice()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IRequestMessageVoice 请求类型\");\n        }\n\n        public override IResponseMessageImage NewResponseMessageImage()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IResponseMessageImage 响应类型\");\n        }\n\n        public override IResponseMessageMpNews NewResponseMessageMpNews()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IResponseMessageMpNews 响应类型\");\n        }\n\n        public override IResponseMessageMusic NewResponseMessageMusic()","sourceCodeStart":36,"sourceCodeEnd":72,"githubUrl":"https://github.com/JeffreySu/WeiXinMPSDK/blob/be573f6f94bdbf718dd5f6cdecb137fbc7ff651e/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageEntityEnlightener.cs#L36-L72","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nvar videoMsg = enlightener.NewRequestMessageVideo();\n// after\nvar videoMsg = requestMessage is IRequestMessageVideo\n    ? (IRequestMessageVideo)requestMessage\n    : enlightener.NewRequestMessageText();","handlingStrategy":"type-guard","validationCode":"if (requestMessage is IRequestMessageVideo) { /* route to MP handler */ return; }","typeGuard":"static bool IsVideoRequest(IRequestMessage m) => m is IRequestMessageVideo;","tryCatchPattern":"try\n{\n    var videoMsg = enlightener.NewRequestMessageVideo();\n}\ncatch (MessageHandlerException)\n{\n    // video requests are not supported in WxOpen; fall back to text handling\n}","preventionTips":["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."],"tags":["wxopen","message-handler","unsupported-message-type","video"],"backgroundTag":"unsupported-operation","analyzedSha":"be573f6f94bdbf718dd5f6cdecb137fbc7ff651e","analyzedAt":"2026-09-12T10:01:50.733Z","contentChangedAt":"2026-09-12T10:01:50.733Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}