{"record":{"id":"e161845376ef3685","repo":"JeffreySu/WeiXinMPSDK","slug":"iresponsemessagenews","errorCode":null,"errorMessage":"微信公众号不支持 IResponseMessageNews 响应类型","messagePattern":"微信公众号不支持 IResponseMessageNews 响应类型","errorType":"exception","errorClass":"MessageHandlerException","httpStatus":null,"severity":"error","filePath":"src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageEntityEnlightener.cs","lineNumber":79,"sourceCode":"\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()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IResponseMessageMusic 响应类型\");\n        }\n\n        public override IResponseMessageNews NewResponseMessageNews()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IResponseMessageNews 响应类型\");\n        }\n\n        public override IResponseMessageText NewResponseMessageText()\n        {\n            return new Senparc.Weixin.MP.Entities.ResponseMessageText();\n            //throw new MessageHandlerException(\"微信公众号不支持 IResponseMessageText 响应类型\");\n        }\n\n        public override IResponseMessageTransfer_Customer_Service NewResponseMessageTransfer_Customer_Service()\n        {\n            return new ResponseMessageTransfer_Customer_Service();\n        }\n\n        public override IResponseMessageVideo NewResponseMessageVideo()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IResponseMessageVideo 响应类型\");\n        }\n","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/JeffreySu/WeiXinMPSDK/blob/be573f6f94bdbf718dd5f6cdecb137fbc7ff651e/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageEntityEnlightener.cs#L61-L97","documentation":"WxOpenMessageEntityEnlightener.NewResponseMessageNews unconditionally throws MessageHandlerException. News (图文) replies are 公众号-specific; the WxOpen factory intentionally rejects building them because Mini Program messages cannot respond with news articles.","triggerScenarios":"Calling NewResponseMessageNews() on the WxOpen enlightener, e.g. a WxOpen handler trying to return a news response or generic reply code that builds news messages for all platforms.","commonSituations":"Reusing MP 图文 reply handlers in WxOpen; shared response-builder utilities without platform guards.","solutions":["Return ResponseMessageText or ResponseMessageTransfer_Customer_Service in WxOpen handlers.","Remove the news-reply branch from WxOpen message handling.","Deliver article links as plain text within a text response if the content is needed."],"exampleFix":"// before\nvar news = enlightener.NewResponseMessageNews();\n// after\nvar reply = enlightener.NewResponseMessageText();\nreply.Content = $\"<a href=\\\"{articleUrl}\\\">{articleTitle}</a>\";","handlingStrategy":"validation","validationCode":"if (replyKind == ReplyKind.News && platform == Platform.WxOpen)\n    replyKind = ReplyKind.TextWithLink; // send article URL as text instead","typeGuard":"static bool IsNewsResponse(IResponseMessageBase r) => r is IResponseMessageNews; // invalid in WxOpen","tryCatchPattern":"try\n{\n    var news = enlightener.NewResponseMessageNews();\n}\ncatch (MessageHandlerException)\n{\n    var reply = enlightener.NewResponseMessageText();\n    reply.Content = articleUrl; // degrade gracefully\n}","preventionTips":["Deliver 图文 content in WxOpen as text containing links, not News entities.","Branch reply generation on platform before building responses.","Review the enlightener to confirm which New* methods return entities vs throw."],"tags":["wxopen","message-handler","unsupported-response-type","news"],"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"}