0

关注和取消关注报错的

微信开发 · blqw · 查看 158 次 · 于 28天前

关注和取消关注报错的

我发现官方有2段代码是这样的
这里没有传第二个参数
https://github.com/JeffreySu/WeiXinMPSDK/blob/master/src/Senparc.Weixin.MP/Senparc.Weixin.MP/RequestMessageFactory.cs#L90

而在这段代码里, 如果是event类型的消息, 会使用第二个参数
但是第二个参数null 所以炸了   第一次用不了是什么情况
其他消息是好的
https://github.com/JeffreySu/WeiXinMPSDK/blob/master/src/Senparc.Weixin.MP/Senparc.Weixin.MP/MessageContexts/DefaultMpMessageContext.cs#L84

报错信息如下

xml parse >> <xml>
 <ToUserName><![CDATA[gh_052ac245b75a]]></ToUserName>
 <FromUserName><![CDATA[o2QgnxJCl-TWay5LrEmoTZRO40f0]]></FromUserName>
 <CreateTime>1569170878</CreateTime>
 <MsgType><![CDATA[event]]></MsgType>
 <Event><![CDATA[subscribe]]></Event>
 <EventKey><![CDATA[]]></EventKey>
</xml>
event >> SUBSCRIBE
requestMsgType >> Event
doc >> null
fail: Microsoft.AspNetCore.Server.Kestrel[13]
     Connection id "0HLPVFIJOAC58", Request id "0HLPVFIJOAC58:00000001": An unhandled exception was thrown by the application.
System.NullReferenceException: Object reference not set to an instance of an object.
  at Senparc.Weixin.MP.MessageContexts.DefaultMpMessageContext.GetRequestEntityMappingResult(RequestMsgType requestMsgType, XDocument doc)
  at Senparc.Weixin.MP.RequestMessageFactory.GetRequestEntity[TMC](TMC messageContext, XDocument doc, PostModel postModel)
  at Senparc.Weixin.MP.MessageHandlers.MessageHandler`1.Init(XDocument postDataDocument, IEncryptPostModel postModel)
  at Senparc.NeuChar.MessageHandlers.MessageHandler`3.CommonInitialize(XDocument postDataDocument, Int32 maxRecordCount, IEncryptPostModel postModel)
  at api.Controllers.AuthController.Post(PostModel postModel) in C:\Users\blqw\source\repos\fuxiao_wechat_api\src\api\Controllers\AuthController.cs:line 31
  at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
  at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.SyncObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
  at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
  at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
  at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
  at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
  at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
  at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
  at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
  at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
  at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
  at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
  at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext)
  at Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext httpContext)
  at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
您尚未登陆,请:网站登录 or 微信登陆
共收到 9 条回复
0

blqw 26天前

@minlong331 我估计你的是密文  我的是明文的
你可以先自行解密 或者等大佬的新版本  手动滑稽

0

Senparc 26天前

大家稍等,今天计划会发布一个支持.net core 3.0的新版本,会一起处理掉这个问题。

0

minlong331 26天前

我升级到最新的sdk也有这个问题了,@blqw 按你的方法,我怎么拿出来的xml doc不太对,里面没有event这个节点,按源码是从root.event 这里拿到事件类型的,这是为什么呢?

0

Senparc 26天前

好的,我来看一下,这次上下文整个重构了。

1

blqw 26天前

@Senparc 我现在的解决方案是

```csharp
public class CustomMessageContext : DefaultMpMessageContext
{
   [ThreadStatic]
   private static XDocument _xdoc;
   public static void SetXDocument(XDocument xdoc) => _xdoc = xdoc;
   public override IRequestMessageBase GetRequestEntityMappingResult(RequestMsgType requestMsgType, XDocument doc = null)
   {
       return base.GetRequestEntityMappingResult(requestMsgType, doc ?? _xdoc);
   }
}
```

```csharp
public class CustomMessageHandler : MessageHandler<CustomMessageContext>
{
   public override XDocument Init(XDocument postDataDocument, IEncryptPostModel postModel)
   {
       CustomMessageContext.SetXDocument(postDataDocument);
       return base.Init(postDataDocument, postModel);
   }
```

简直了...

0

gendou915 26天前

与我提交的ISSUE 相同

https://github.com/JeffreySu/WeiXinMPSDK/issues/1930

0

Senparc 26天前

@blqw 你的意思是这个代码里面少传入了doc的参数吗?

https://github.com/JeffreySu/WeiXinMPSDK/blob/master/src/Senparc.Weixin.MP/Senparc.Weixin.MP/RequestMessageFactory.cs#L90

0

gendou915 26天前

今天CLONE GITHUB遇到相同问题

0

blqw 28天前

```csharp
   public class CustomMessageContext : DefaultMpMessageContext
   {
       public override IRequestMessageBase GetRequestEntityMappingResult(RequestMsgType requestMsgType, XDocument doc = null)
       {
           Console.WriteLine("requestMsgType >> " + requestMsgType);
           Console.WriteLine("doc >> " + ((object)doc ?? "null"));
           return base.GetRequestEntityMappingResult(requestMsgType, doc);
       }
   }
```

我自己写了个子类来打印参数


热门话题 更多 >>

当前扩展缓存策略没有进行注册

gis008 29 个回复 • 查看 458 次 • 108天前

GetWxaCodeUnlimit 生成1KB文件

a124754649 22 个回复 • 查看 1133 次 • 14天前

cpu满载

blezt 21 个回复 • 查看 545 次 • 99天前

SessionId无效

gdlcf88 11 个回复 • 查看 434 次 • 47天前

“Nested”的类型初始值设定项引发异常

dream0013 9 个回复 • 查看 314 次 • 151天前

关注和取消关注报错的

blqw 9 个回复 • 查看 158 次 • 26天前

Messagehandler问题

Jenny_Wu 7 个回复 • 查看 268 次 • 111天前

通过扫描临时二维码关注公众号

诀别十年 7 个回复 • 查看 162 次 • 96天前

core 3.0对接微信公众号后消息响应报错。

jianweie 7 个回复 • 查看 120 次 • 12天前

是否有拦截器

qq1170971516 6 个回复 • 查看 180 次 • 24天前

素材管理-推送失败

cristi 6 个回复 • 查看 226 次 • 140天前

core环境下退款方法tenpayv3.refund方法失败

ericsy 6 个回复 • 查看 325 次 • 93天前

微信公众号不显示关注事件的content

jiangchen 4 个回复 • 查看 294 次 • 72天前

QQ群
  • 1群:300313885 (2000人群 已满)
  • 2群:293958349 (1000人群 已满)
  • 3群:342319110 (2000人群 已满)
  • 4群:372212092 (500人群 已满)
  • 5群:377815480 (1000人群 已满)
  • 6群:425898825 (1000人群 已满)
  • 7群:482942254 (500人群 已满)
  • 8群:106230270 (500人群 已满)
  • 9群:539061281 (500人群 已满)
  • 10群(分布式缓存):246860933 Senparc.Weixin.Cache SDK 10群
  • 11群:553198593 (500人群 已满)
  • 12群(微信小程序):108830388 Senparc微信小程序 12群
  • 13群(开放平台):183424136 (500人群 已满)
  • 14群(视频学员):588231256 Senparc.Weixin SDK 14群
  • 15群(公众号/综合):289181996 Senparc.Weixin SDK 15群
  • 16群(开放平台):860626938 (500人群 已满)
  • 17群(开放平台):770615466 [17群 开放平台]SenparcSDK
  • NeuChar 技术交流群:618605800 NeuChar 开发交流群
  • SCF 技术交流群:147054579 SCF 开发交流群
微信开发宝典:《微信开发深度解析》

由 Senparc.Weixin SDK 作者耗时两年完成的微信开发图书《微信开发深度解析:公众号、小程序高效开发秘籍》已经出版!

历经2年精心雕琢,难得的“理论 + 实战案例 + 趟坑经验”总结,
从需求分析、策划,到账号申请、验证,再到全面的 API 及开发工具,
覆盖所有开发微信公众号(含订阅号、服务号和小程序)所需关键技能!

视频教程:《微信公众号+小程序快速开发》

由盛派课堂(盛派旗下独立教育品牌)制作,《微信开发深度解析》作者苏震巍先生主讲的《微信公众号+小程序快速开发》视频课程开课啦!

课程采用“理论+实战”的教学形式,结合部分《微信开发深度解析》内容,独立于书本,包含了更多的操作演示和案例展示,帮助大家从多个维度学习微信开发以及.NET开发过程中的诸多技巧。
课程包含两大部分:
1. 微信开发基础技能
2. 公众号及小程序案例实战
共计60课时,配有番外篇,目前视频已在网易云课堂上线。