簡體   English   中英

C#對象引用未設置為對象的實例(在堆棧跟蹤中未提及空引用)

[英]c# object reference not set to an instance of an object (no mention of null reference in stack trace)

在發布模式下運行Windows服務時,出現“對象引用未設置為對象實例”錯誤(請注意,正如您從堆棧跟蹤中看到的那樣,它沒有提及與NullReference有關的任何內容讓我更加困惑)。 每次我在調試模式下運行此代碼時,代碼都能正常工作,但是一旦我構建它以在服務器上發布並啟動它,它就會因對象引用錯誤而失敗。 請參閱下面的堆棧跟蹤,然后在下面的代碼跟蹤。

=================================================================================

Error Message: [EventQueueBulkProcessingHandler] Failed to process events
Stack Trace: 

Error Message (INNER EXCEPTION LEVEL 1): Object reference not set to an instance of an object.
Stack Trace (INNER EXCEPTION LEVEL 1):
   at Voicebox.EventTriggers.Processing.Preparation.EventContactsFilter.Filter(ContactsModel contacts, ContactsFilterModel contactsFilterModel, Int32 clientId) in D:\Websites\VoiceboxTest\Voicebox\VoiceBox.EventTriggers\Processing\Preparation\EventContactsFilter.cs:line 24
   at Voicebox.EventTriggers.Processing.Preparation.TriggerActionDetailsBuilder.CreateTriggerActionDetails(Trigger trigger, ITriggerEvent triggerEvent) in D:\Websites\VoiceboxTest\Voicebox\VoiceBox.EventTriggers\Processing\Preparation\TriggerActionDetailsBuilder.cs:line 48
   at Voicebox.EventTriggers.Processing.Handlers.UserEventsHandler.<>c__DisplayClass6_0.<MapEventsToTriggers>b__0(Trigger t, ITriggerEvent e) in D:\Websites\VoiceboxTest\Voicebox\VoiceBox.EventTriggers\Processing\Handlers\UserEventsHandler.cs:line 62
   at Voicebox.EventTriggers.Helpers.PermutationsHelper.<>c__DisplayClass0_1`3.<Permutations>b__1(TB b) in D:\Websites\VoiceboxTest\Voicebox\VoiceBox.EventTriggers\Helpers\PermutationsHelper.cs:line 11
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.<SelectManyIterator>d__17`2.MoveNext()
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Linq.Enumerable.<SelectManyIterator>d__17`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at Voicebox.EventTriggers.Processing.Handlers.UserEventsHandler.<HandleAsync>d__5.MoveNext() in D:\Websites\VoiceboxTest\Voicebox\VoiceBox.EventTriggers\Processing\Handlers\UserEventsHandler.cs:line 37
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Voicebox.EventTriggers.Processing.EventQueueBulkProcessingHandler.<ProcessEventsGrouppedByClient>d__8.MoveNext() in D:\Websites\VoiceboxTest\Voicebox\VoiceBox.EventTriggers\Processing\EventQueueBulkProcessingHandler.cs:line 107
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Voicebox.EventTriggers.Processing.EventQueueBulkProcessingHandler.<ProcessInternal>d__6.MoveNext() in D:\Websites\VoiceboxTest\Voicebox\VoiceBox.EventTriggers\Processing\EventQueueBulkProcessingHandler.cs:line 52

=================================================================================

因此,從上面的堆棧跟蹤中可以看出,問題出在第24行的EventContactsFilter文件中。這對我來說毫無意義,因為這是List的初始化。 見下面的代碼;

            // this is the line 24 which the stack trace points too
            List<string> filterExpressions = new List<string>();

            foreach (var model in contactsFilterModel.Criteria)
            {
                string fieldName = GetFieldName(contacts.ListId, model.FieldID, clientId);

                FieldType fieldType = GetFieldType(model);
                FilterExpression FilterExpression = ExpressionBuilder.GetFilterExpression(fieldName, model, fieldType);
                var expression = FilterExpression.sqlExpression;
                filterExpressions.Add(expression);
            }

因此,正如您所看到的,創建新列表時會拋出該錯誤,並且經過許多小時或在網上搜索后,我仍無法找出可能導致此問題的原因。 如果有人能夠提供幫助,我將永遠在您的債務中!!

我不是很確定問題是List<string>聲明。 請在該聲明周圍使用try-catch ,並查看實際的錯誤消息是什么。

我的直覺說問題不存在。 也許在那條線的上方或下方。 我的猜測是foreach 無論哪種方式,請try-catch該代碼:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM