0

所以我的 Web 应用程序总是让主机关闭池并出现 503 错误(可能是快速失败)。我的托管给我发了这篇文章。

^? Exception type: ArgumentException 
^? Exception message:^?The parameters dictionary contains a null entry for parameter 'pageNum' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult AjaxFetch(Int32, Int32)' in 'Frontend.Controllers.BlogController'. An optional para

该方法的签名是

(上面没有属性,可以用get调用)

public ActionResult AjaxFetch(int pageNum, int pageSize)

现在这一切都非常简单,我可以简单地将 int 更改为 int?瞧。这就是我所做的。我的问题是出于好奇。为什么它失败了,因为我只从 js/jquery 调用这个函数并设置了参数。因此代码总是有效的。但显然在后台产生了错误。这是为什么。没有人用 null 调用它,但它却失败了。

最后,我将包括我的路由,以免那里出现故障,这是我的两条路线,我没有别的

        routes.MapRoute(
            name: "stalkSaveOld",
            url: "geoshare",
            defaults: new { controller = "Stalk", action = "SaveCoordinate" }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Blog", action = "Index", id = UrlParameter.Optional }
        );

顺便说一句,AjaxFetch 在 BlogController

4

1 回答 1

2

为什么它失败了,因为我只从 js/jquery 调用这个函数并设置了参数。

我的猜测是其他东西(机器人?)在不包括所有参数的情况下调用它。

我建议暂时将其更改为使用可空类型,但如果在记录诊断信息(用户代理、客户端 IP 地址、完整请求 URL)后检测到任一值为空,则会失败并出现错误。

于 2013-05-03T09:18:25.430 回答