У меня есть действие контроллера, которое отлично работает на Firefox как локально, так и в работе, и IE локально, но не в IE. Вот мое действие контроллера:
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);
}
Вот трассировка стека, которую я получаю в IE:
Ошибка. Произошла ошибка при обработке вашего запроса. System.Reflection.TargetException: нестатическому методу требуется цель. в System.Reflection.RuntimeMethodInfo.CheckConsistency (Цель объекта) в System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck (Object obj, параметры BindingFlags invokeAttr, Binder, Binder, Object [], CultureInfo culture) в System.Reflectionvo.Info BindingFlags invokeAttr, связыватель Binder, параметры Object [], культура CultureInfo) в System.Reflection.RuntimePropertyInfo.GetValue (объектный объект, индекс Object []) в System.Data.Objects.ELinq.QueryParameterExpression.TryGetFieldOrPropertyValue, MemberExpertyPalue Object & memberValue) в System.Data.Objects.ELinq.QueryParameterExpression.TryEvaluatePath (выражение выражения,
1 forMergeOption) at System.Data.Objects.ObjectQuery
1.GetResults (Nullable1 forMergeOption) at System.Data.Objects.ObjectQuery
1.System.Collections.Generic.IEnumerable.GetEnumerator () в System.Linq.Enumerable.FirstOrDefault [TSource] (1 source) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable
источник IEnumerable 1) в LandTitle.Controllers.HomeController.MNRefdale (l) , Object []) в System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 параметра) в Castle.Proxies.Invocations. Castle.Proxies.AsyncControllerActionInvokerProxy.InvokeActionMethod (ControllerContext controllerContext, ActionDescriptor actionDescriptor, параметры IDictionary``2) в System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayCync.WW.Clayb_player_player_player_player.dll (> ._____ClayClay.play_Wid.dll) .AsyncControllerActionInvoker. <> C__DisplayClass4f.b__49 () в System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass37.b__36 (IAsyncResult asyncResult) в System.Web.Mvc.ync.AsyncControllerActionInvoker. <> C__DisplayClass25. <> C__DisplayClass2a.b__20 () в System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass25.b__22 (IAsyncResult asyncResult)
Ответы:
Я думаю, что это запутанное исключение возникает, когда вы используете переменную в лямбда-выражении, которая является нулевой ссылкой во время выполнения. В вашем случае я бы проверил, является ли ваша переменная expressionViewModel пустой ссылкой.
Что-то вроде:
источник
Where()
лямбда-выражении. Отличный ответ; сэкономил мне часы сегодня.Обычно это происходит, когда цель нулевая. Поэтому лучше сначала проверить цель invoke, а затем выполнить запрос linq.
источник
Я обнаружил, что эта проблема распространена в Entity Framework, когда мы создаем экземпляр Entity вручную, а не через DBContext, который разрешит все свойства навигации. Если между таблицами есть ссылки на внешние ключи (свойства навигации), и вы используете эти ссылки в своей лямбде (например, ProductDetail.Products.ID), то этот контекст «Продукты» остается пустым, если вы создали сущность вручную.
источник
Все ответы указывают на лямбда-выражение с NRE (исключение нулевой ссылки). Я обнаружил, что это также происходит при использовании Linq to Entities. Я подумал, что было бы полезно указать, что это исключение не ограничивается просто NRE внутри лямбда-выражения.
источник
Я сталкиваюсь с этой ошибкой при тестировании WebAPI в инструменте Почтальон.
Надеюсь это кому-нибудь пригодится ...
источник