gpt4 book ai didi

c# - mvc 操作无效参数给出 argumentexception 500 而不是 404

转载 作者:太空狗 更新时间:2023-10-29 21:17:33 25 4
gpt4 key购买 nike

当我有这样的 Controller 操作时。

public ActionResult _Files(long parentid)
{

如果您从没有 parentid 的浏览器调用操作。它抛出 System.ArgumentException 和 500 响应

The parameters dictionary contains a null entry for parameter 'parentid' of non-nullable type 'System.Int64' for method 'System.Web.Mvc.ActionResult _Files

根据设计,在没有 PARENTID 的情况下不应调用该操作。有没有办法不抛出异常(并返回 500 响应),而是返回 400 错误请求或 404 未找到(IMO 中的任何一个都更有意义)。正在寻找一种可以在整个 Web 应用程序中以通用方式执行此操作的解决方案?

最佳答案

我建议您看一下路线限制。创建路由约束需要将整数作为 parentid 传递,如果未提供,路由将不匹配,默认情况下将返回 404。

这是一个例子:

routes.MapRoute(
name: "MyController",
url: "MyController/{parentid}",
defaults: new { controller = "MyController", action = "Index" },
constraints: new { parentid = @"\d+" }
);

有关 route constraints 的更多信息,请参阅本文.

这种方法的唯一缺点是正则表达式不检查输入值是 long 还是更大的值。但是,如果这是一个问题,您可以轻松地创建一个自定义路由约束来检查输入值是否可以解析为 long

关于c# - mvc 操作无效参数给出 argumentexception 500 而不是 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22672749/

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