参数字典包含非可空类型'System.Int32'的参数'quoteId'的空条目用于方法

时间:2012-10-26 03:44:20

标签: asp.net-mvc iis

错误完整描述:

System.ArgumentException: The parameters dictionary contains a null entry for  
  parameter 'quoteId' of non-nullable type 'System.Int32' for method 
  'System.Web.Mvc.JsonResultGetQuoteSubTotal(Int32, System.String)' 
  in 'NI.Apps.WebSite.OliteBase.Controllers.QuotationController'. 
  An optional parameter must be a reference type, a nullable type,
  or be declared as an optional parameter.
Parameter name: parameters
   at System.Web.Mvc.ActionDescriptor.ExtractParameterFromDictionary(ParameterInfo parameterInfo, IDictionary`2 parameters, MethodInfo methodInfo)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
   at System.Web.Mvc.Controller.ExecuteCore()
   at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
   at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.<BeginProcessRequest>b__5()
   at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0()
   at System.Web.Mvc.MvcHandler.<>c__DisplayClasse.<EndProcessRequest>b__d()
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

我的旧网络服务器上从未出现过该错误。 旧的Web服务器环境:Windows Server 2003(64位)/ IIS 6 / .NET 4。 将环境升级到:Windows Server 2008R2 / IIS 7.5 / .NET 4后,始终抛出错误,但并非所有请求都会导致错误。

所以这个问题是配置问题吗?

感谢。

2 个答案:

答案 0 :(得分:0)

这是unlikley配置错误。看起来有些传入请求缺少quoteId参数,这不是可选的。如果再次播放相同的请求,两个服务器都会显示此行为(除非代码也不同)。

答案 1 :(得分:0)

当从浏览器发送请求时缺少必需参数时,会出现此错误。 检查预期传递给页面的参数值。