我有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 回答

慕蓋茨4494581
TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
您有一個(gè)async
帶有多個(gè)await
s的方法。編譯器將整個(gè)方法轉(zhuǎn)換為狀態(tài)機(jī),而您的方法實(shí)際上只調(diào)用了這個(gè)狀態(tài)機(jī)。
這個(gè)狀態(tài)機(jī)類有上面提到的MoveNext()
方法,它現(xiàn)在包含你真正想做的所有工作。
要分析您的內(nèi)容,NullReferenceException
您應(yīng)該檢查StackTrace
異常的屬性而不是TargetSite
.

慕雪6442864
TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
方法是一種async/await
方法。
這種方法用一個(gè)MoveNext
方法重寫成狀態(tài)機(jī)。這就是為什么您的堆棧跟蹤會將此方法標(biāo)識為拋出該異常的方法。
.NET Core 2.0 或 2.1 具有內(nèi)置或額外的 nuget 包,可以修復(fù)這樣的堆棧跟蹤,以提及實(shí)際方法而不是生成的方法。
然而,它可能不會修復(fù) TargetSite,而且我認(rèn)為它不會處理 .NET Framework。
- 2 回答
- 0 關(guān)注
- 294 瀏覽
添加回答
舉報(bào)
0/150
提交
取消