Почему это исключение ссылки на объект запускается в моем развернутом приложении C # MVC? - PullRequest
1 голос
/ 16 мая 2019

У меня проблема с моим приложением MVC в производственной среде. Это исключение нулевого указателя в месте, которое, на мой взгляд, не имеет смысла. Кроме того, я не могу воспроизвести это локально.

Это трассировка стека:

Ссылка на объект не установлена ​​для экземпляра объекта. в App.Controllers.ReservationController.Index (идентификатор строки) в C: \ App \ Controllers \ ReservationController.cs: строка 1593 в lambda_method (Closure, ControllerBase, Object []) в System.Web.Mvc.ActionMethodDispatcher.Execute (ControllerBase контроллер, параметры Object []) в System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, параметры IDictionary'2) в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod (ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary'2 параметры)
System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass42.b__41 () в System.Web.Mvc.Async.AsyncResultWrapper. <> C__DisplayClass8'1.b__7 (IAsyncResult _) в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult'1.End ()
в System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod (IAsyncResult asyncResult) в System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass37. <> C__DisplayClass39.b__33 () в System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass4f.b__49 () в System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass4f.b__49 ()

Это код в строке (1593), к которой относится трассировка стека:

this.CheckInvalidSegmentStatus();

Для дополнительной информации :

  • Функция CheckInvalidSegmentStatus - это метод, принадлежащий контроллеру, из которого я его вызываю;
  • this определено, потому что я проверяю его перед вызовом функции, которая вызывает ошибку: if (this.CurrentPNR != null);
  • Я не могу воспроизвести эту проблему при локальном запуске проекта.

Дополнительный код:

    protected virtual void CheckInvalidSegmentStatus()
    {
        //check if booking has invalid status segments
        var hasWLSegmentStatus = false;
        if (this.CurrentPNR.GDSReservation != null)
        {
            hasWLSegmentStatus = (
                from r in this.CurrentPNR.GDSReservation.AirReservations.NullToEmpty()
                from f in r.Fares.NullToEmpty()
                from q in f.Quotes.NullToEmpty()
                from si in q.SegmentInfo.NullToEmpty()
                let seg = si.Segment as Air.Segment
                where seg != null && seg.StatusCode != null && seg.StatusCode[1] == 'L'            
                select seg
            ).Count() > 0;
        }

        if (hasWLSegmentStatus)
        {
            this.CurrentPNR.ErrorList.Add(new Message
            {
                ErrorMessage = TTS.Framework.Resources.ResourceManager.GetText("Reservation.ReservationHasSegmentsInWaitListStatus"),
                ErrorType = ErrorType.Warning
            });
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...