The parameters dictionary contains a null entry for parameter 'productPageId' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult RetrieveProductRibbons(Int32, Int32[])' in 'SevenSpikes.Nop.Plugins.ProductRibbons.Controllers.ProductRibbonsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters
The parameters dictionary contains a null entry for parameter 'productPageId' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult RetrieveProductRibbons(Int32, Int32[])' in 'SevenSpikes.Nop.Plugins.ProductRibbons.Controllers.ProductRibbonsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters
Any idea where I should look to correct this?
Lance
HI Lance,
In the markup of the Ribbons there is a data attribute i.e data-retrieveproductribbonsurl attribute. This attribute is used by the javascript of the plugin to get the ribbons but it expects some parameters to be passed. For some reason there are search engines that are trying to make a request to this url of course without the required parameters and that is why you get this error in the log. It is no something that you have to worry about i.e the plugin is not functioning etc. This is corrected in nopCommerce 3.2 as explained here. If you can update the plugin to 3.2 then you will get the fix.
It is the same in version 3.2 that I have installed on my site; this is the error:
The parameters dictionary contains a null entry for parameter 'productPageId' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult RetrieveProductRibbons(Int32, Int32[])' in 'SevenSpikes.Nop.Plugins.ProductRibbons.Controllers.ProductRibbonsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters
System.ArgumentException: The parameters dictionary contains a null entry for parameter 'productPageId' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult RetrieveProductRibbons(Int32, Int32[])' in 'SevenSpikes.Nop.Plugins.ProductRibbons.Controllers.ProductRibbonsController'. 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.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.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__36(IAsyncResult asyncResult, ActionInvocation innerInvokeState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3c() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass45.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3e() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass45.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3e() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass45.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3e() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass45.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3e() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass45.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3e() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass45.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3e() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass45.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3e() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass45.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3e() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass30.<BeginInvokeActionMethodWithFilters>b__2f(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass1e.<>c__DisplayClass28.<BeginInvokeAction>b__19() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass1e.<BeginInvokeAction>b__1b(IAsyncResult asyncResult) at System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__4(IAsyncResult asyncResult, ProcessRequestState innerState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at Sys
It is the same in version 3.2 that I have installed on my site; this is the error:
This is because you are using an older version of 3.2. Which version of 3.2 are you using? After version 3.2.xxx.9558 you should not longer see such errors.