У меня проблема с моим приложением 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
});
}