我正在使用Web API,并尝试调用PUT方法来更新用户。我已经改变了我的路由以允许调用特定的方法,就像这样; (这适用于其他方法)。
RouteTable.Routes.MapRoute(
"WithActionApi",
"api/{controller}/{action}/{id}"
);
RouteTable.Routes.MapRoute(
"DefaultApi",
"api/{controller}/{id}",
new { action = "DefaultAction", id = System.Web.Http.RouteParameter.Optional }
);
但是当我尝试将用户输入以下网址时,我收到404错误;
// The url is: http://mysite/
HttpResponseMessage response = await client.PutAsJsonAsync("api/Account/UserInfo/" + user.UserId, user);
网址如下所示。我也试过“api / Account /".
http://mysite/api/account/userinfo/{guid}
该方法在我的控制器中看起来像这样。方法签名已经从另一个控制器的默认控制器类搭建 - 我只添加了属性并将其移动到帐户控制器。
[RoutePrefix("api/Account")]
...
[HttpPut]
[Route("UserInfo/{id}")]
public IHttpActionResult PutUserInfo(Guid id, User userdetails)
{ }
我也有人能看到我在这里做错了吗?我对此非常感兴趣。
谢谢,
答案 0 :(得分:0)
检查是否添加了以下内容:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
}
}
http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
答案 1 :(得分:0)
我设法通过在putuserinfo(guid,user)方法上面添加以下路由属性来实现它。
[Route("{userid:Guid}")]