【问题标题】:Return 404 if parameter type is wrong如果参数类型错误,则返回 404
【发布时间】:2014-02-24 08:20:13
【问题描述】:

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

【问题讨论】:

  • 你想如何处理路由信息?配置路由
  • 路由默认是Controller/Action配置的,action应该是Index(int Id)。如果我输入 URL /controller/action?id=abc,我得到 500 异常
  • 我以前没试过,但是你能设置一个单独的路由规则,它接受一个字符串,然后从规则路由到的操作中返回一个 404 吗?
  • 嗨,一般来说这应该可以。另一件事是,如果我有 250 条路线,为每条路线创建另外 1000 条路线,并带有几个参数……可以有一些通用的解决方案吗?在基类的某个地方发现这个问题??
  • 好的,是的,那样的话就不太实用了。您可能可以在路由领域的某个地方扩展一些东西来改变默认行为,但我从来没有涉足过。希望有更多知识的人加入。

标签: asp.net-mvc http-status-code-404


【解决方案1】:

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

http://www.asp.net/mvc/tutorials/controllers-and-routing/creating-a-route-constraint-cs

那么放置一个字符串而不是 id 将不匹配路由。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 2013-02-10
    • 2022-10-02
    • 2021-11-28
    • 2019-06-30
    • 2017-03-30
    • 2020-12-04
    相关资源
    最近更新 更多