J'ai une action de contrôleur qui fonctionne bien sur Firefox à la fois localement et en production, et IE localement, mais pas IE en production. Voici mon action de contrôleur:
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);
}
Voici la trace de pile que j'obtiens dans IE:
Erreur. Une erreur s'est produite lors du traitement de votre demande. System.Reflection.TargetException: la méthode non statique nécessite une cible. à System.Reflection.RuntimeMethodInfo.CheckConsistency (Object target) à System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck (Object obj, BindingFlags invokeAttr, Binder binder, Object [] parameters, CultureInfo culture) à System.Reflection.RuntimeMethodInfo.obuntokeInfo. BindingFlags invokeAttr, Binder binder, Object [] parameters, CultureInfo culture) at System.Reflection.RuntimePropertyInfo.GetValue (Object obj, Object [] index) at System.Data.Objects.ELinq.QueryParameterExpression.TryGetFieldOrPropertyValue, MemberExpression, MemberExpression Object & memberValue) sur System.Data.Objects.ELinq.QueryParameterExpression.TryEvaluatePath (Expression expression,
1 forMergeOption) at System.Data.Objects.ObjectQuery
1.GetResults (Nullable1 forMergeOption) at System.Data.Objects.ObjectQuery
1.System.Collections.Generic.IEnumerable.GetEnumerator () at System.Linq.Enumerable.FirstOrDefault [TSource] (IEnumerable1 source) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable
1 source) at LandTitle.Controllers.HomeController.MNRefi () at lambda_methodase (lambure, ControllerBase) , Object []) sur System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 paramètres) sur Castle.Proxies.Invocations.ControllerActionInvoker_InvokeActionMethod.InvokeMethodOnTarget () sur Castle.DynamicProxy.AbstractInvocation.Proceed () sur Glimpse.Mvc3.Interceptor.InvokeActionMethodInterceptor.IntervocationAtteraction (InvokeActionMethodInterceptor.Intervocation) Castle.Proxies.AsyncControllerActionInvokerProxy.InvokeActionMethod (ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary''2 paramètres) sur System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass37. <> C__Display.ClassWeb.clb .AsyncControllerActionInvoker. <> C__DisplayClass4f.b__49 () sur System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass37.b__36 (IAsyncResult asyncResult) sur System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass25. <> C__DisplayClass2a.b__20 () sur System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass25.b__22 (IAsyncResult asyncResult)
Réponses:
Je pense que cette exception déroutante se produit lorsque vous utilisez une variable dans un lambda qui est une référence nulle au moment de l'exécution. Dans votre cas, je vérifierais si votre calcul de variableViewModel est une référence nulle.
Quelque chose comme:
la source
Where()
expression lambda. Très bonne réponse; m'a fait gagner des heures aujourd'hui.Cela se produit normalement lorsque la cible est nulle. Il vaut donc mieux vérifier d'abord la cible d'invocation puis faire la requête linq.
la source
J'ai trouvé que ce problème était répandu dans Entity Framework lorsque nous instancions une entité manuellement plutôt que via DBContext qui résoudra toutes les propriétés de navigation. S'il existe des références de clé étrangère (propriétés de navigation) entre les tables et que vous utilisez ces références dans votre lambda (par exemple ProductDetail.Products.ID), ce contexte "Produits" reste nul si vous avez créé manuellement l'entité.
la source
Toutes les réponses pointent vers une expression Lambda avec un NRE (Null Reference Exception). J'ai constaté que cela se produit également lors de l'utilisation de Linq to Entities. J'ai pensé qu'il serait utile de souligner que cette exception ne se limite pas à un NRE dans une expression Lambda.
la source
Je fais face à cette erreur lors du test de WebAPI dans l'outil Postman.
J'espère que ça servira à quelqu'un ...
la source