c # ссылка на объект не установлена ​​для экземпляра объекта (без упоминания нулевой ссылки в трассировке стека) - PullRequest
0 голосов
/ 24 января 2019

Я получаю ошибку «Ссылка на объект не установлена ​​на экземпляр объекта» при запуске моей службы 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

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

Итак, если исходить из вышеприведенной трассировки стека, он говорит, что проблема в файле EventContactsFilter в строке 24. Это то, где это не имеет смысла для меня, так как это инициализация 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);
            }

Итак, как вы можете видеть, ошибка создается при создании нового списка, и после многих часов поиска в Интернете я не смог выяснить, что может быть причиной этого. Если кто-нибудь сможет помочь, я буду навсегда у тебя в долгу !!

1 Ответ

0 голосов
/ 24 января 2019

Я не совсем уверен, что проблема в декларации List<string>.Пожалуйста, используйте try-catch вокруг этой декларации и посмотрите, что на самом деле является сообщением об ошибке.

Моя интуиция говорит, что проблема не в этом.Может быть, что-то выше или под этой линией.Я думаю, что foreach.В любом случае, try-catch этот код:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...