Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如果参数类型错误,则返回404_Asp.net Mvc_Http Status Code 404 - Fatal编程技术网

Asp.net mvc 如果参数类型错误,则返回404

Asp.net mvc 如果参数类型错误,则返回404,asp.net-mvc,http-status-code-404,Asp.net Mvc,Http Status Code 404,我想知道是否有一些通用的方法来解决我的问题。假设我的一些操作期望传递Id参数,但在某个时刻,用户可能会尝试将Id参数的字符串分配到URL中。结果,我们的操作没有被激发,基类中抛出了500个异常。有没有办法解决这个问题并抛出404异常?您可以在路由上设置约束。你可以在这里找到一个很好的教程 然后放置字符串而不是id将与路由不匹配 替代方法是在MVC/webapi中创建一个异常过滤器来处理所有异常并查找条件,或者创建一个自定义路由处理程序。您希望如何处理路由信息?配置路由该路由由默认控制器/操作配

我想知道是否有一些通用的方法来解决我的问题。假设我的一些操作期望传递Id参数,但在某个时刻,用户可能会尝试将Id参数的字符串分配到URL中。结果,我们的操作没有被激发,基类中抛出了500个异常。有没有办法解决这个问题并抛出404异常?

您可以在路由上设置约束。你可以在这里找到一个很好的教程

然后放置字符串而不是id将与路由不匹配


替代方法是在MVC/webapi中创建一个异常过滤器来处理所有异常并查找条件,或者创建一个自定义路由处理程序。

您希望如何处理路由信息?配置路由该路由由默认控制器/操作配置,如果操作应为索引(int Id)。如果我输入URL/controller/action?id=abc,我会得到500个例外我以前没有尝试过这个,但是你能设置一个单独的路由规则,它包含一个字符串,然后从规则路由到的操作返回一个404吗?嗨,一般来说这应该行得通。另一件事是如果我有250条路线,用几个参数为每条路线再创建1000条。。。有什么普遍的解决办法吗?在基类中的某个地方讨论这个问题?好的,是的,在这种情况下,它不会太实际。您可能可以在路由领域的某个地方扩展某个东西来更改默认行为,但我从未涉足过。希望有更多知识的人会加入进来。