我有WebAPI一段代码,其中在使用我的记录器记录的 try 块中编写的代码中存在 Null 引用异常。但在TargetSite对中Exception得到记录,我收到虚空的MoveNext()而不是此代码的编写方法名。什么可能是相同的原因?public async Task<ResponseStatus> ProcessRCSCNotification(IList<RecurringSubscriptionModelV2> recurringSubscriptionList, string appCD) { foreach (var model in modelList){ // Some code try { // Exception occurs here } catch (Exception ex) { // Logger is logging exception here }} return null; }
2 回答
![?](http://img1.sycdn.imooc.com/533e4d5b0001d57502200203-100-100.jpg)
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
您有一个async
带有多个await
s的方法。编译器将整个方法转换为状态机,而您的方法实际上只调用了这个状态机。
这个状态机类有上面提到的MoveNext()
方法,它现在包含你真正想做的所有工作。
要分析您的内容,NullReferenceException
您应该检查StackTrace
异常的属性而不是TargetSite
.
![?](http://img1.sycdn.imooc.com/545847f50001126402200220-100-100.jpg)
慕雪6442864
TA贡献1812条经验 获得超5个赞
方法是一种async/await
方法。
这种方法用一个MoveNext
方法重写成状态机。这就是为什么您的堆栈跟踪会将此方法标识为抛出该异常的方法。
.NET Core 2.0 或 2.1 具有内置或额外的 nuget 包,可以修复这样的堆栈跟踪,以提及实际方法而不是生成的方法。
然而,它可能不会修复 TargetSite,而且我认为它不会处理 .NET Framework。
- 2 回答
- 0 关注
- 264 浏览
添加回答
举报
0/150
提交
取消