Tengo una acción de controlador que funciona bien en Firefox tanto localmente como en producción, e IE localmente, pero no IE en producción. Aquí está mi acción de controlador:
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);
}
Aquí está el seguimiento de la pila que obtengo en IE:
Error. Se produjo un error al procesar su solicitud. System.Reflection.TargetException: el método no estático requiere un objetivo. en System.Reflection.RuntimeMethodInfo.CheckConsistency (Objetivo del objeto) en System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck (Object obj, BindingFlags invokeAttr, Binder Binder, Object [], parámetros [], CultureInfo culture) en System.Reflection.fountInthod.OptimeMetodo BindingFlags invokeAttr, Binder binder, Object [] parámetros, CultureInfo culture) en System.Reflection.RuntimePropertyInfo.GetValue (Object obj, Object [] index) en System.Data.Objects.ELinq.QueryParameterExpression. CalculateGetFieldOrPropertyValue (instancia, MemberExpression, instancia, ObjectExpression me Object & memberValue) en System.Data.Objects.ELinq.QueryParameterExpression. CalculateEvaluatePath (expresión de expresión,
1 forMergeOption) at System.Data.Objects.ObjectQuery
1.GetResults (Nullable1 forMergeOption) at System.Data.Objects.ObjectQuery
1.System.Collections.Generic.IEnumerable.GetEnumerator () en System.Linq.Enumerable.FirstOrDefault [TSource] (IEnumerable1 source) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable
1 fuente) en LandTitle.Controllers.HomeController.MNRefi () en lambda_method (Closure, Controller) , Object []) en System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 parámetros) en Castle.Proxies.Invocations.ControllerActionInvoker_InvokeActionMethod.InvokeMethodOnTarget () en Castle.DynamicProxy.AbstractInvocation.Proceed () en Glimpse.Mvc3.Interceptor.InvokeActionMethodInterceptor.Intercept (II.vocation. Castle.Proxies.AsyncControllerActionInvokerProxy.InvokeActionMethod (ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary``2 parámetros) en System.Web.Mvc.Async.Async.AyncControllerActionInvoker. <> C__DisplayClass37. <> C__Dis..39. .AsyncControllerActionInvoker. <> C__DisplayClass4f.b__49 () en System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass37.b__36 (IAsyncResult asyncResult) en System.Web.Mvc.Async. En System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass25. <> C__DisplayClass2a.b__20 () en System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass25.b__22 (IAsyncResult asyncResult)
fuente
Respuestas:
Creo que esta excepción confusa ocurre cuando usas una variable en un lambda que es una referencia nula en tiempo de ejecución. En su caso, verificaría si su variable CalculaViewModel es una referencia nula.
Algo como:
fuente
Where()
expresión lambda. Gran respuesta; Me salvó horas hoy.Normalmente ocurre cuando el objetivo es nulo. Así que mejor verifique el objetivo de invocación primero y luego haga la consulta linq.
fuente
He descubierto que este problema prevalece en Entity Framework cuando instanciamos una Entidad manualmente en lugar de hacerlo a través de DBContext, que resolverá todas las Propiedades de navegación. Si hay referencias de clave externa (propiedades de navegación) entre las tablas y usa esas referencias en su lambda (por ejemplo, ProductDetail.Products.ID), ese contexto de "Productos" permanece nulo si creó manualmente la entidad.
fuente
Todas las respuestas apuntan a una expresión Lambda con una NRE (excepción de referencia nula). He descubierto que también ocurre cuando se usa Linq para Entidades. Pensé que sería útil señalar que esta excepción no se limita a solo un NRE dentro de una expresión Lambda.
fuente
Me enfrento a este error al probar WebAPI en la herramienta Postman.
Espero que le sirva a alguien ...
fuente