0

企业微信回调时候messageHandler.Execute() 显示System.NullReferenceException

微信开发 · chenny333 · 查看 346 次 · 于 161天前

Execute企业微信

var messageHandler = new WorkCustomMessageHandler(Request.GetRequestMemoryStream(), postModel, maxRecordCount);

           if (messageHandler.RequestMessage == null)
           {
               //验证不通过或接受信息有错误
           }

           try
           {
               //测试时可开启此记录,帮助跟踪数据,使用前请确保App_Data文件夹存在,且有读写权限。
               messageHandler.SaveRequestMessageLog();//记录 Request 日志(可选)

               messageHandler.Execute();//执行微信处理过程(关键)

               messageHandler.SaveResponseMessageLog();//记录 Response 日志(可选)

               //自动返回加密后结果
               return new FixWeixinBugWeixinResult(messageHandler);//为了解决官方微信5.0软件换行bug暂时添加的方法,平时用下面一个方法即可
           }

用的core3.0demo 执行到messageHandler.Execute()就报System.NullReferenceException
我的版本是5.0 是否有影响?还是哪里配置没有添加?
您尚未登录,请:网站登录 or 微信登录
共收到 4 条回复
0

chenny333 160天前

搞定了,用了异步方法 正常了,感谢大大

0

Senparc 160天前

您试试看用异步方法 await messageHandler.ExecuteAsync();是否会有同样的问题?
另外看一下启动代码的配置是否是严格按照Demo每一行都对照写了(可选的除外)。

0

chenny333 161天前

ExecptionMessage:Object reference not set to an instance of an object.
Microsoft.Extensions.Caching.Abstractions
  at Microsoft.Extensions.Caching.Memory.CacheExtensions.Get(IMemoryCache cache, Object key)
  at Senparc.CO2NET.Cache.LocalObjectCacheStrategy.CheckExisted(String key, Boolean isFullKey)
  at Senparc.CO2NET.Cache.LocalObjectCacheStrategy.<>c__DisplayClass19_0.<CheckExistedAsync>b__0()
  at System.Threading.Tasks.Task`1.InnerInvoke()
  at System.Threading.Tasks.Task.<>c.<.cctor>b__277_0(Object obj)
  at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
  at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
  at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
  at Senparc.CO2NET.Cache.LocalObjectCacheStrategy.CheckExistedAsync(String key, Boolean isFullKey)
  at Senparc.NeuChar.Context.GlobalMessageContext`3.GetMessageContextAsync(String userName)
  at Senparc.NeuChar.Context.GlobalMessageContext`3.GetMessageContextAsync(String userName, Boolean createIfNotExists)
  at Senparc.NeuChar.Context.GlobalMessageContext`3.GetMessageContextAsync(TRequest requestMessage)
  at Senparc.NeuChar.MessageHandlers.MessageHandler`3.GetCurrentMessageContext()
  at Senparc.NeuChar.MessageHandlers.MessageHandler`3.CheckMessageRepeat()
  at Senparc.NeuChar.MessageHandlers.MessageHandler`3.ExecuteAsync(CancellationToken cancellationToken)
  at Senparc.NeuChar.MessageHandlers.MessageHandler`3.Execute()
  at CemaoDoNetApi.Controllers.Weixin.Work.WorkController.Index(String msg_signature, String timestamp, String nonce) in D:\Work\Source\Repos\CemaoDoNetApi\CemaoDoNetApi\Controllers\Weixin\Work\WorkController.cs:line 102

这是messageHandler.Execute()报的错

Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException
 HResult=0x80131620
 Message=Unexpected end of request content.
 Source=Microsoft.AspNetCore.Server.Kestrel.Core
 StackTrace:
  at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelBadHttpRequestException.Throw(RequestRejectionReason reason)
  at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1ContentLengthMessageBody.<ReadAsyncInternal>d__10.MoveNext()
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at System.Runtime.CompilerServices.ValueTaskAwaiter`1.GetResult()
  at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpRequestStream.<ReadAsyncInternal>d__29.MoveNext()
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
  at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpRequestStream.Read(Byte[] buffer, Int32 offset, Int32 count)
  at System.IO.Stream.Read(Span`1 buffer)
  at Microsoft.AspNetCore.WebUtilities.FileBufferingReadStream.Read(Span`1 buffer)
  at Microsoft.AspNetCore.WebUtilities.FileBufferingReadStream.Read(Byte[] buffer, Int32 offset, Int32 count)
  at System.IO.StreamReader.ReadBuffer()
  at System.IO.StreamReader.ReadToEnd()
  at Senparc.CO2NET.AspNet.HttpUtility.RequestUtility.GetRequestMemoryStream(HttpRequest request)
  at CemaoDoNetApi.Controllers.Weixin.Work.WorkController.Index(String msg_signature, String timestamp, String nonce) in D:\Work\Source\Repos\CemaoDoNetApi\CemaoDoNetApi\Controllers\Weixin\Work\WorkController.cs:line 90
  at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<<InvokeActionMethodAsync>g__Logged|12_1>d.MoveNext()

 此异常最初是在此调用堆栈中引发的:
   [外部代码]
   CemaoDoNetApi.Controllers.Weixin.Work.WorkController.Index(string, string, string) (位于 WorkController.cs 中)
   [外部代码]

这个错误是在var messageHandler = new WorkCustomMessageHandler(Request.GetRequestMemoryStream(), postModel, maxRecordCount);这行就报了

1

Senparc 161天前 编辑于 2021年1月14日 17:31

.net 5.0用的是.net standard 2.1,完全兼容的。

您能跟踪到具体抛错的某一行代码吗?


热门话题 更多 >>

TenPayV3.Unifiedorder 调用统一订单接口 签名错误

sy87468118 14 个回复 • 查看 267 次 • 61天前

.net 5微信退款报错

magiboy 13 个回复 • 查看 531 次 • 73天前

appsettings.json取不到数据--centos7

yintingji 12 个回复 • 查看 532 次 • 83天前

小程序客服消息能否自动回复链接消息

LXL.WxDeveloper 11 个回复 • 查看 222 次 • 35天前

关于微信小程序发送订阅消息

LXL.WxDeveloper 8 个回复 • 查看 290 次 • 64天前

书本P137中的AccessToken是如何获得的?

senparclsx 6 个回复 • 查看 249 次 • 135天前

验证回掉失败

pcm77 5 个回复 • 查看 199 次 • 127天前

TenPay.V3.TenPayV3.Refund退款BUG

zhuyuelee 5 个回复 • 查看 246 次 • 49天前

找不到[微信营销]标签

senparclsx 4 个回复 • 查看 242 次 • 148天前

UniformSend 小程序统一消息发布bug

hanhedy 3 个回复 • 查看 217 次 • 160天前

请帮助解决以下问题

senparclsx 3 个回复 • 查看 157 次 • 170天前

个人信息
QQ群
  • 1群:300313885 (2000人群 已满)
  • 2群:293958349 (1000人群 已满)
  • 3群:342319110 (2000人群 已满)
  • 4群:372212092 (500人群 已满)
  • 5群:377815480 Senparc.Weixin.MP SDK 5群
  • 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 (500人群 已满)
  • 16群(开放平台):860626938 (500人群 已满)
  • 17群(开放平台):770615466 [17群 开放平台]SenparcSDK
  • NCF 技术交流群:147054579 SCF 开发交流群
微信开发宝典:《微信开发深度解析》

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

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

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

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

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