{"record":{"id":"14f66ff7d4a6e8ef","repo":"JeffreySu/WeiXinMPSDK","slug":"iresponsemessagempnews-workmessageentityenlightener","errorCode":null,"errorMessage":"微信企业号不支持 IResponseMessageMpNews 响应类型","messagePattern":"微信企业号不支持 IResponseMessageMpNews 响应类型","errorType":"exception","errorClass":"MessageHandlerException","httpStatus":null,"severity":"error","filePath":"src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageHandlers/WorkMessageEntityEnlightener.cs","lineNumber":71,"sourceCode":"\n        public override IRequestMessageVideo NewRequestMessageVideo()\n        {\n            return new RequestMessageVideo();\n        }\n\n        public override IRequestMessageVoice NewRequestMessageVoice()\n        {\n            return new RequestMessageVoice();\n        }\n\n        public override IResponseMessageImage NewResponseMessageImage()\n        {\n            return new ResponseMessageImage();\n        }\n\n        public override IResponseMessageMpNews NewResponseMessageMpNews()\n        {\n            throw new MessageHandlerException(\"微信企业号不支持 IResponseMessageMpNews 响应类型\");\n        }\n\n        public override IResponseMessageMusic NewResponseMessageMusic()\n        {\n            throw new MessageHandlerException(\"微信企业号不支持 IResponseMessageMusic 响应类型\");\n        }\n\n        public override IResponseMessageNews NewResponseMessageNews()\n        {\n            return new ResponseMessageNews();\n        }\n\n        public override IResponseMessageText NewResponseMessageText()\n        {\n            return new ResponseMessageText();\n        }\n\n        public override IResponseMessageTransfer_Customer_Service NewResponseMessageTransfer_Customer_Service()","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/JeffreySu/WeiXinMPSDK/blob/be573f6f94bdbf718dd5f6cdecb137fbc7ff651e/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageHandlers/WorkMessageEntityEnlightener.cs#L53-L89","documentation":"The WeChat Work (企业号/企业微信) message handler does not support the MpNews response type. WorkMessageEntityEnlightener.NewResponseMessageMpNews() unconditionally throws MessageHandlerException because WeChat Work's message API has no equivalent of the Official Account's mpnews message.","triggerScenarios":"Calling NewResponseMessageMpNews() on a WorkMessageHandler's entity enlightener, e.g. inside an overridden DefaultResponseMessage or an OnXxxRequest handler when building an IResponseMessageMpNews reply.","commonSituations":"Developers porting code written for the WeChat Official Account (Senparc.Weixin.MP) to WeChat Work and reusing the same response-type factory pattern; MpNews exists only on MP.","solutions":["Replace IResponseMessageMpNews with a supported Work response type such as ResponseMessageNews, ResponseMessageText, or ResponseMessageImage.","Guard for platform differences: only create MpNews responses in the MP message handler, not the Work one.","If news-style content is needed, send it via a Work API call (e.g. news-type message via Senparc.Weixin.Work message APIs) instead of the passive reply."],"exampleFix":"// before\npublic override IWorkResponseMessageBase DefaultResponseMessage(IWorkRequestMessageBase rm)\n{\n    var resp = requestMessageHandler.CreateResponseMessage<IResponseMessageMpNews>();\n    ...\n}\n// after\npublic override IWorkResponseMessageBase DefaultResponseMessage(IWorkRequestMessageBase rm)\n{\n    var resp = requestMessageHandler.CreateResponseMessage<IResponseMessageNews>();\n    ...\n}","handlingStrategy":"validation","validationCode":"if (handler is Senparc.Weixin.Work.MessageHandlers.WorkMessageHandler<>)\n{\n    // WeChat Work never supports MpNews replies — pick a supported type\n    response = handler.CreateResponseMessage<IResponseMessageNews>();\n}","typeGuard":"bool IsWorkHandler(MessageHandler<DefaultWorkMessageContext> h) => h is Senparc.Weixin.Work.MessageHandlers.WorkMessageHandler<DefaultWorkMessageContext>;","tryCatchPattern":"try\n{\n    resp = handler.CreateResponseMessage<IResponseMessageMpNews>();\n}\ncatch (MessageHandlerException)\n{\n    resp = handler.CreateResponseMessage<IResponseMessageNews>();\n}","preventionTips":["Consult the Work SDK's supported response types before replying; MpNews/Music/Transfer_Customer_Service are MP-only.","Keep MP and Work handler code in separate classes rather than sharing a generic reply builder."],"tags":["weixin-work","message-handler","unsupported-response-type"],"backgroundTag":"unsupported-operation","analyzedSha":"be573f6f94bdbf718dd5f6cdecb137fbc7ff651e","analyzedAt":"2026-09-12T10:01:50.733Z","contentChangedAt":"2026-09-12T10:01:50.733Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}