0

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

微信开发 · chenny333 · 查看 2367 次 · 于 2年前

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 2年前

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

0

Senparc 2年前

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

0

chenny333 2年前

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 2年前 编辑于 2021年1月14日 17:31

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

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


热门话题 更多 >>

sdk的配置文件更改位置

ylh0320 5 个回复 • 查看 1091 次 • 16天前

.netcore7菜单获取问题

wangbin5542 4 个回复 • 查看 251 次 • 113天前

菜单读取失败

Patrick 4 个回复 • 查看 268 次 • 113天前

获取支付校验出错

xiaosa1944 3 个回复 • 查看 316 次 • 90天前

小程序授权

fjl-net 3 个回复 • 查看 2879 次 • 120天前

Config.SenparcWeixinSetting.Items["xxx"]得不到值

donet520 3 个回复 • 查看 395 次 • 144天前

企业微信官方调整了用户和部门部分接口

qw4566540 2 个回复 • 查看 338 次 • 142天前

企业微信升级最新包项目启动异常

fan. 2 个回复 • 查看 490 次 • 92天前

微信公众号获取已发布列表,返回结果为空

torres 2 个回复 • 查看 312 次 • 111天前

tenpayv3 jsapi 报错,这个是怎么回事呢

xiaosa1944 2 个回复 • 查看 286 次 • 111天前

企业微信自建应用后台搭建

wangliangonline 2 个回复 • 查看 511 次 • 153天前

公众号自动回复多张图片

yuluo 1 个回复 • 查看 259 次 • 120天前

微信公众号 账号平台设置

dadi 1 个回复 • 查看 243 次 • 111天前

获取公众号菜单出错

xiaosa1944 1 个回复 • 查看 236 次 • 90天前

微信推送消息

chenzezhao 1 个回复 • 查看 250 次 • 104天前

企业微信审批模块审批状态推送事件

qq29366365 1 个回复 • 查看 351 次 • 183天前

个人信息
QQ群
  • 1群:300313885 (2000人群 已满)
  • 2群:293958349 (1000人群 已满)
  • 3群(公众号):342319110 Senparc.Weixin.MPSDK 3群
  • 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 (2000人群 已满)
  • 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课时,配有番外篇,目前视频已在网易云课堂上线。