gpt4 book ai didi

asp.net-mvc - 处理无效的 MVC 参数

转载 作者:行者123 更新时间:2023-12-03 08:37:42 27 4
gpt4 key购买 nike

在我们的 MVC 应用程序中,我们有一个定义如下的路由:

routes.MapRoute("ViewUser", "ViewUser/{userId}", new { controller = "general", action = "viewuser", userId = 0 });

userId 被定义为不可为 null 的 int 类型,默认值为 0。但是,我们偶尔会发现 google 广告机器人会出于某种未知原因将页面称为/ViewUser/phptest.php。这会导致 500 错误:

The parameters dictionary contains a null entry for parameter 'userId' of non-nullable type 'System.Int32'  

目前,如果我们忽略 google 正在尝试抓取无效 url 的事实,是否可以强制执行 404 而不是 500 错误?

最佳答案

我能想到的一种方法是完全删除默认路由并指定路由约束:

routes.MapRoute(
"ViewUser",
"ViewUser/{userId}",
new { controller = "general", action = "viewuser", userId = @"\d+" });

这样,只有当 userId 满足约束(在本例中为数字)时才会使用路由。由于您没有默认路由(或与请求匹配的任何其他路由),因此您应该按要求获得 404。

缺点是您必须为所有操作显式指定路由(在 Route.config 中或使用路由属性)

关于asp.net-mvc - 处理无效的 MVC 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35683271/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com