我有点困惑。我有一个 Controller (派生自 ApiController),它具有以下方法:
[ActionName("getusername")]
public string GetUserName(string name)
{
return "TestUser";
}
我的路由设置如下:
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
当我尝试在 fiddler 中使用 GET 访问 /api/mycontroller/getusername/test
时,我不断收到 400 错误。
当我将 [FromBody]
添加到 GetUserName 中的 name 参数时,我发现一切正常。
我不知何故认为 [FromBody]
用于 HttpPost
,表明该参数位于帖子正文中,因此不需要获取
。看来我错了。
这是如何工作的?
最佳答案
您需要将路由更改为:
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{name}",
defaults: new { name = RouteParameter.Optional }
);
或将参数名称更改为:
[ActionName("getusername")]
public string GetUserName(string id)
{
return "TestUser";
}
注意:其他路由参数必须与方法参数名称匹配。
关于asp.net-mvc-4 - Web.API 和 FromBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14739631/