Mam działanie kontrolera, które działa poprawnie w przeglądarce Firefox zarówno lokalnie, jak i produkcyjnie, a IE lokalnie, ale nie IE w produkcji. Oto moja akcja kontrolera:
public ActionResult MNPurchase()
{
CalculationViewModel calculationViewModel = (CalculationViewModel)TempData["calculationViewModel"];
decimal OP = landTitleUnitOfWork.Sales.Find()
.Where(x => x.Min >= calculationViewModel.SalesPrice)
.FirstOrDefault()
.OP;
decimal MP = landTitleUnitOfWork.Sales.Find()
.Where(x => x.Min >= calculationViewModel.MortgageAmount)
.FirstOrDefault()
.MP;
calculationViewModel.LoanAmount = (OP + 100) - MP;
calculationViewModel.LendersTitleInsurance = (calculationViewModel.LoanAmount + 850);
return View(calculationViewModel);
}
Oto ślad stosu, który otrzymuję w IE:
Błąd. Podczas przetwarzania żądania wystąpił błąd. System.Reflection.TargetException: Metoda niestatyczna wymaga celu. at System.Reflection.RuntimeMethodInfo.CheckConsistency (Object Object) w System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck (Object obj, BindingFlags invokeAttr, Binder binder, Object [] parametry, CultureInfo culture) w System.Reflection.RuntimevethodInfo. BindingFlags invokeAttr, Binder segregator, parametry Object [], CultureInfo culture) w System.Reflection.RuntimePropertyInfo.GetValue (Object obj, Object [] index) w System.Data.Objects.ELinq.QueryParameterExpression.TryGetFieldOrPropertyValion, instanceE Object & memberValue) w System.Data.Objects.ELinq.QueryParameterExpression.TryEvaluatePath (wyrażenie wyrażenia,
1 forMergeOption) at System.Data.Objects.ObjectQuery
1.GetResults (Nullable 1.System.Collections.Generic.IEnumerable.GetEnumerator (1 forMergeOption) at System.Data.Objects.ObjectQuery
) w System.Linq.Enumerable.FirstOrDefault [TSource] (IEnumerable1 source) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable
1 source) w LandTitle.Controllers.HomeController.MNRefi () w lambda_metase , Object []) w System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 parametry) w Castle.Proxies.Invocations.ControllerActionInvoker_InvokeActionMethod.InvokeMethodOnTarget () w Castle.DynamicProxy.AbstractInvocation.Proceed () w Glimpse.Mvc3.Interceptor.InvokeActionMethodInterceptor.Interceptor.Interceptor. Castle.Proxies.AsyncControllerActionInvokerProxy.InvokeActionMethod (ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary``2 parametry) w System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass37cebsv. .AsyncControllerActionInvoker. <> C__DisplayClass4f.b__49 () w System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass37.b__36 (IAsyncResult asyncResult) w System.WebsMc.AsyncControllerActionInvoker. <> C__DisplayClass25. <> C__DisplayClass2a.b__20 () w System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass25.b__22 (IAsyncResult asyncResult)
źródło
Odpowiedzi:
Myślę, że ten mylący wyjątek występuje, gdy używasz zmiennej w lambda, która jest zerowym odwołaniem w czasie wykonywania. W twoim przypadku sprawdziłbym, czy twoja zmienna obliczeniaViewModel jest odwołaniem zerowym.
Coś jak:
źródło
Where()
wyrażeniu lambda. Świetna odpowiedź; oszczędził mi dziś godziny.Zwykle dzieje się tak, gdy cel jest zerowy. Lepiej więc najpierw sprawdź cel wywoływania, a następnie wykonaj zapytanie linq.
źródło
Zauważyłem, że ten problem występuje w Entity Framework, gdy tworzymy instancję ręcznie ręcznie, a nie za pomocą DBContext, który rozwiąże wszystkie właściwości nawigacji. Jeśli między tabelami znajdują się odwołania do klucza obcego (właściwości nawigacji) i używasz tych odwołań w lambda (np. ProductDetail.Products.ID), wówczas kontekst „Produkty” pozostaje pusty, jeśli ręcznie utworzyłeś Encję.
źródło
Wszystkie odpowiedzi wskazują na wyrażenie Lambda z NRE (Null Reference Exception). Przekonałem się, że występuje to również podczas korzystania z Linq do jednostek. Pomyślałem, że pomocne byłoby wskazanie, że ten wyjątek nie ogranicza się tylko do NRE w wyrażeniu Lambda.
źródło
Napotykam ten błąd podczas testowania interfejsu WebAPI w narzędziu Postman.
Mam nadzieję, że przyda się komuś ...
źródło