Eu tenho uma ação de controlador que funciona bem no Firefox localmente e na produção e no IE localmente, mas não no IE na produção. Aqui está a minha ação do 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);
}
Aqui está o rastreamento de pilha que recebo no IE:
Erro. Um erro ocorreu durante o processamento do seu pedido. System.Reflection.TargetException: o método não estático requer um destino. em System.Reflection.RuntimeMethodInfo.CheckConsistency (destino do objeto) em System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck (obj de objeto, BindingFlags invokeAttr, fichário de encadernador, parâmetros de Object [], cultura CultureInfo) em System.Reflection.RuntimeMethodInfo.InvokeArguments BindingFlags invokeAttr, fichário do fichário, parâmetros Object [], cultura CultureInfo) em System.Reflection.RuntimePropertyInfo.GetValue (Objeto de objeto, índice Object []) em System.Data.Objects.ELinq.QueryParameterExpression.TryGetFieldOrPropertyValue (MemberExpression me, Instância de objeto, Object & memberValue) em System.Data.Objects.ELinq.QueryParameterExpression.TryEvaluatePath (Expression expression,
1 forMergeOption) at System.Data.Objects.ObjectQuery
1.GetResults (Anulável 1.System.Collections.Generic.IEnumerable.GetEnumerator (1 forMergeOption) at System.Data.Objects.ObjectQuery
) em System.Linq.Enumerable.FirstOrDefault [TSource] (1 source) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable
fonte IEnumerable 1) em LandTitle.Controllers.HomeController.MNRefi () em lambda_method (Closure, ControllerBase) , Object []) em System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 parâmetros) em Castle.Proxies.Invocations.ControllerActionInvoke_InvokeActionMethod. Castle.Proxies.AsyncControllerActionInvokerProxy.InvokeActionMethod (ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary``2 parâmetros) em System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass37. <> C__DisplayClassc..b33. .AsyncControllerActionInvoker. <> C__DisplayClass4f.b__49 () em System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass37.b__36 (IAsyncResult asyncResult) em System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass25. <> C__DisplayClass2a.b__20 () em System.Web.Mvc.Async.AsyncControllerActionInvoker. <> C__DisplayClass25.b__22 (IAsyncResult asyncResult)
Respostas:
Eu acho que essa exceção confusa ocorre quando você usa uma variável em um lambda que é uma referência nula em tempo de execução. No seu caso, eu verificaria se a sua variável cálculoViewModel é uma referência nula.
Algo como:
fonte
Where()
expressão lambda. Ótima resposta; me salvou horas hoje.Normalmente isso acontece quando o destino é nulo. Portanto, verifique primeiro o destino da chamada e, em seguida, faça a consulta linq.
fonte
Descobri que esse problema prevalece no Entity Framework quando instanciamos uma Entidade manualmente, e não através do DBContext, que resolverá todas as Propriedades de navegação. Se houver referências de chave estrangeira (propriedades de navegação) entre tabelas e você as usar no lambda (por exemplo, ProductDetail.Products.ID), o contexto "Produtos" permanecerá nulo se você tiver criado manualmente a entidade.
fonte
Todas as respostas estão apontando para uma expressão Lambda com um NRE (Exceção de Referência Nula). Eu descobri que isso também ocorre ao usar o Linq to Entities. Eu pensei que seria útil ressaltar que essa exceção não se limita apenas a um NRE dentro de uma expressão Lambda.
fonte
Eu enfrento esse erro ao testar o WebAPI na ferramenta Postman.
Espero que seja útil para alguém ...
fonte