ローカルでも本番環境でも 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(Object target)、System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj、BindingFlags invokeAttr、Binder バインダー、Object[] パラメーター、CultureInfo culture)、System.Reflection.RuntimeMethodInfo.Invoke(Object obj、BindingFlags invokeAttr、Binder バインダー、Object[] パラメーター、CultureInfo culture)、System.Reflection.RuntimePropertyInfo.GetValue(Object obj、Object[] インデックス)、System.Data.Objects.ELinq.QueryParameterExpression.TryGetFieldOrPropertyValue(MemberExpression me、Object instance、Object& memberValue)、System.Data.Objects.ELinq.QueryParameterExpression.TryEvaluatePath(Expression 式、ConstantExpression& constantExpression)、 System.Data.Objects.ELinq.QueryParameterExpression.EvaluateParameter(Object[] 引数)、System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable
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](IEnumerable1 source) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable
1 ソース)、LandTitle.Controllers.HomeController.MNRefi()、lambda_method(Closure、ControllerBase、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.ControllerActionInvoker_InvokeActionMethod.InvokeMethodOnTarget()、Castle.DynamicProxy.AbstractInvocation.Proceed() でGlimpse.Mvc3.Interceptor.InvokeActionMethodInterceptor.Intercept(IInvocation 呼び出し)、Castle.DynamicProxy.AbstractInvocation.Proceed()、Castle.Proxies.AsyncControllerActionInvokerProxy.InvokeActionMethod(ControllerContext controllerContext、ActionDescriptor actionDescriptor、IDictionary``2 パラメーター)、System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.b__33()、System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.b__49()、System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.b__36(IAsyncResult asyncResult)、 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__DisplayClass2a.b__20() は、System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) にあります。
ベストアンサー1
この紛らわしい例外は、実行時に null 参照となるラムダ内の変数を使用した場合に発生すると思います。あなたの場合、変数 computingViewModel が null 参照であるかどうかを確認します。
何かのようなもの:
public ActionResult MNPurchase()
{
CalculationViewModel calculationViewModel = (CalculationViewModel)TempData["calculationViewModel"];
if (calculationViewModel != null)
{
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);
}
else
{
// Do something else...
}
}