非静态方法需要一个目标 [英] Non-static method requires a target
问题描述
我有一个控制器动作,在本地和生产中都可以在Firefox上工作,而IE本地工作,而不是在生产中的IE。这是我的控制器操作:
I have a controller action that works fine on Firefox both locally and in production, and IE locally, but not IE in production. Here is my controller action:
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中得到的堆栈跟踪:
Here is the stack trace I get in IE:
错误。
处理您的请求时发生错误。
System.Reflection.TargetException:非静态方法需要一个目标。在
System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)at
System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj,BindingFlags
invokeAttr,Binder binder,Object []参数,CultureInfo文化)在
System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder
binder,Object []参数,CultureInfo文化)在
System.Reflection.RuntimePropertyInfo.GetValue(Object obj,对象[]索引)在
System.Data.Objects.ELinq.QueryParameterExpression.TryGetFieldOrPropertyValue(MemberExpression me,Object instance,Object& memberValue)at
System.Data.Objects.ELinq.QueryParameterExpression.TryEvaluatePath(Expression表达式,ConstantExpression& constantExpression)在
System.Data.Objects.ELinq.QueryParameterExpression.EvaluateParameter(Object [] arguments)
在System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable1 forMergeOption)
1.
at System.Data.Objects.ObjectQuery
的系统结果(Nullable1 forMergeOption)System.Data.Objects.ObjectQuery
1.系统.Collections.Generic.IEnumerable.GetEnumerator()
在System.Linq.Enumerable.FirstOrDefault [TSource](IEnumerable1源)
System.Linq.Queryable.FirstOrDefault [TSource ](code $ 1 $)
LandTitle.Controllers.HomeController.MNRefi()在lambda_method(Closure,ControllerBase,
Object [])在System.Web.Mvc.ReflectedActionDescriptor在
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext
controllerContext,ActionDescriptor actionDescriptor,IDictionary $ c)中的.Execute(ControllerContext
controllerContext,IDictionary2参数) $ c> 2参数)
Castle.Proxies.Invocations.ControllerActionInvoker_InvokeActionMethod.InvokeMethodOnTarget()在Castle.DynamicProxy.AbstractInvocation.Proceed()在
Glimpse.Mvc3.Interceptor.InvokeActionMethodIn terrant.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()at
System.Web.Mvc.Async.AsyncControllerActionInvoker。<> c__DisplayClass4f.b__49()at
System.Web在System.Web上的
System.Web.Mvc.Async.AsyncControllerActionInvoker。c__DisplayClass25。c__DisplayClass2a.b__20()中的.Mvc.Async.AsyncControllerActionInvoker。c__DisplayClass37.b__36(IAsyncResult asyncResult)。 Mvc.Async.AsyncControllerActionInvoker。c__DisplayClass25.b__22(IAsyncResult asyncResult)
Error. An error occurred while processing your request. System.Reflection.TargetException: Non-static method requires a target. at System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target) at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, 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 me, Object instance, Object& memberValue) at System.Data.Objects.ELinq.QueryParameterExpression.TryEvaluatePath(Expression expression, ConstantExpression& constantExpression) at System.Data.Objects.ELinq.QueryParameterExpression.EvaluateParameter(Object[] arguments) at 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() at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable1 source) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable
1 source) at LandTitle.Controllers.HomeController.MNRefi() at lambda_method(Closure , ControllerBase , Object[] ) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 parameters) at Castle.Proxies.Invocations.ControllerActionInvoker_InvokeActionMethod.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Glimpse.Mvc3.Interceptor.InvokeActionMethodInterceptor.Intercept(IInvocation invocation) at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.AsyncControllerActionInvokerProxy.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.b__33() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.b__49() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.b__36(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__DisplayClass2a.b__20() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult)
推荐答案
我认为这个混乱的异常会发生在使用lambda的变量,这是在run-t的空引用我。在你的情况下,我会检查你的变量calculateViewModel是一个空引用。
I think this confusing exception occurs when you use a variable in a lambda which is a null-reference at run-time. In your case, I would check if your variable calculationViewModel is a null-reference.
这样的东西:
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...
}
}
这篇关于非静态方法需要一个目标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!