{"record":{"id":"8ba395ee255e469d","repo":"JeffreySu/WeiXinMPSDK","slug":"irequestmessageshortvideo","errorCode":null,"errorMessage":"微信公众号不支持 IRequestMessageShortVideo 请求类型","messagePattern":"微信公众号不支持 IRequestMessageShortVideo 请求类型","errorType":"exception","errorClass":"MessageHandlerException","httpStatus":null,"severity":"error","filePath":"src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageEntityEnlightener.cs","lineNumber":44,"sourceCode":"\n        public override IRequestMessageImage NewRequestMessageImage()\n        {\n            return new RequestMessageImage();\n        }\n\n        public override IRequestMessageLink NewRequestMessageLink()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IRequestMessageLink 请求类型\");\n        }\n\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()","sourceCodeStart":26,"sourceCodeEnd":62,"githubUrl":"https://github.com/JeffreySu/WeiXinMPSDK/blob/be573f6f94bdbf718dd5f6cdecb137fbc7ff651e/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageEntityEnlightener.cs#L26-L62","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nvar msg = enlightener.NewRequestMessageShortVideo();\n// after\nIRequestMessage msg = requestMessage is RequestMessageShortVideo\n    ? /* handle in MP handler */ HandleShortVideoInMpHandler(requestMessage)\n    : enlightener.NewRequestMessageText();","handlingStrategy":"type-guard","validationCode":"var isMpOnly = requestMessage is IRequestMessageShortVideo;\nif (isMpOnly) return; // handle in MP handler, not WxOpen","typeGuard":"static bool IsMpOnlyRequest(IRequestMessage m) =>\n    m is IRequestMessageShortVideo or IRequestMessageVideo or IRequestMessageVoice;","tryCatchPattern":"try\n{\n    var msg = enlightener.NewRequestMessageShortVideo();\n}\ncatch (MessageHandlerException ex)\n{\n    log.Warn(\"ShortVideo not supported in WxOpen\", ex);\n    fallback = enlightener.NewRequestMessageText();\n}","preventionTips":["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."],"tags":["wxopen","message-handler","unsupported-message-type","short-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-16T09:17:16.951Z"}