gpt4 book ai didi

c# - 允许使用 ASP.NET MVC 路由的字符串 ID

转载 作者:行者123 更新时间:2023-11-30 16:45:26 26 4
gpt4 key购买 nike

我设置了以下 2 个路由,并且在发送有效请求时它们工作正常。

config.Routes.MapHttpRoute("DefaultApiWithId", "{controller}/{id}", new { id = RouteParameter.Optional }, new { id = @"\d+" });
config.Routes.MapHttpRoute("DefaultApiWithAction", "{controller}/{action}");

我想测试一些错误的请求以确保响应是正确的。我正在尝试在我的 Controller 中调用以下操作。

public HttpResponseMessage Get(string id)
{
//output the id again
}

如果我调用 localhost:80/users/123,我会得到一个有效的响应,它将输出 123。当我尝试使用无效的 ID 时,例如,包含字母的 ID 失败并出现以下错误。

{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:80/users/d1g'.","MessageDetail":"No action was found on the controller 'Users' that matches the name 'd1g'."}

我能看出哪里出了问题。这个请求应该匹配第一条路由,而不是匹配第二条路由。我有 2 个名为 Get 的方法。一个接受 ID,另一个不需要 ID。不需要 ID 的那个返回所有记录的列表。我在这方面遇到了很多麻烦,上面的路线是我解决问题的方法。

最佳答案

通过删除约束更新路由,更新路由以避免冲突,然后切换顺序。

config.Routes.MapHttpRoute(
"DefaultApiWithAction",
"{controller}/{action}/{id}"
new { id = RouteParameter.Optional }
);

config.Routes.MapHttpRoute(
"DefaultApiWithId",
"{controller}/{id}",
new { action = "Get", id = RouteParameter.Optional }
);

关于c# - 允许使用 ASP.NET MVC 路由的字符串 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42164439/

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