Web Api路线问题

时间:2014-03-14 03:28:28

标签: asp.net-mvc asp.net-web-api routes

我正在使用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)
    { }

我也有人能看到我在这里做错了吗?我对此非常感兴趣。

谢谢,

2 个答案:

答案 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}")]