Ich habe eine Controller-Aktion, die sowohl lokal als auch in der Produktion in Firefox und lokal im IE, aber nicht im IE in der Produktion einwandfrei funktioniert. Hier ist meine Controller-Aktion:
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);
}
Hier ist die Stapelverfolgung, die ich im IE erhalte:
Error. Während Ihrer Anfrage ist ein Fehler aufgetreten. System.Reflection.TargetException: Für eine nicht statische Methode ist ein Ziel erforderlich. at System.Reflection.RuntimeMethodInfo.CheckConsistency (Objektziel) at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck (Objekt obj, BindingFlags invokeAttr, Binder-Ordner, Object [] -Parameter, CultureInfo-Kultur) at System.Reflection.Ro BindingFlags invokeAttr, Binder Binder, Object [] -Parameter, CultureInfo-Kultur) bei System.Reflection.RuntimePropertyInfo.GetValue (Object obj, Object [] -Index) bei System.Data.Objects.ELinq.QueryParameterExpression.TryGetFieldOrProperty, Object & memberValue) bei System.Data.Objects.ELinq.QueryParameterExpression.TryEvaluatePath (Ausdruck Ausdruck,
1 forMergeOption) at System.Data.Objects.ObjectQuery
1.GetResults (Nullable1 forMergeOption) at System.Data.Objects.ObjectQuery
1.System.Collections.Generic.IEnumerable.GetEnumerator () bei System.Linq.Enumerable.FirstOrDefault [TSource] (IEnumerable1 source) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable
1-Quelle) bei LandTitle.Controllers.HomeController.MNRefi () bei Clamda_Method , Object []) bei System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 Parameter) bei Castle.Proxies.Invocations.ControllerActionInvoker_InvokeActionMethod.InvokeMethodOnTarget () bei Castle.DynamicProxy.AbstractInvocation.Proceed () bei Glimpse.Mvc3.Interceptor.InvokeActionMethodInterceptor.InvokeActionMethodInterceptor.Intercept. Castle.Proxies.AsyncControllerActionInvokerProxy.InvokeActionMethod (ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary``2-Parameter) bei System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass37 .AsyncControllerActionInvoker. <> C__DisplayClass4f.b__49 () bei System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass37.b__36 (IAsyncResult asyncResult) bei System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass25. <> C__DisplayClass2a.b__20 () bei System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass25.b__22 (IAsyncResult asyncResult)
Antworten:
Ich denke, diese verwirrende Ausnahme tritt auf, wenn Sie eine Variable in einem Lambda verwenden, die zur Laufzeit eine Nullreferenz ist. In Ihrem Fall würde ich prüfen, ob Ihre Variable berechnungViewModel eine Nullreferenz ist.
Etwas wie:
quelle
Where()
Lambda-Ausdruck. Gute Antwort; hat mir heute Stunden gespart.Normalerweise passiert es, wenn das Ziel null ist. Überprüfen Sie daher zuerst das aufgerufene Ziel und führen Sie dann die linq-Abfrage durch.
quelle
Ich habe festgestellt, dass dieses Problem im Entity Framework häufig auftritt, wenn wir eine Entität manuell instanziieren und nicht über DBContext, wodurch alle Navigationseigenschaften aufgelöst werden. Wenn zwischen Tabellen Fremdschlüsselreferenzen (Navigationseigenschaften) vorhanden sind und Sie diese Referenzen in Ihrem Lambda verwenden (z. B. ProductDetail.Products.ID), bleibt der Kontext "Produkte" null, wenn Sie die Entität manuell erstellt haben.
quelle
Alle Antworten verweisen auf einen Lambda-Ausdruck mit einer NRE (Null Reference Exception). Ich habe festgestellt, dass es auch bei der Verwendung von Linq to Entities auftritt. Ich dachte, es wäre hilfreich, darauf hinzuweisen, dass diese Ausnahme nicht nur auf eine NRE in einem Lambda-Ausdruck beschränkt ist.
quelle
Beim Testen von WebAPI im Postman-Tool tritt dieser Fehler auf.
Ich hoffe es wird jemandem nützen ...
quelle