WebApi路由无法正常工作

时间:2016-05-28 21:51:23

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

这是我的路线:

config.Routes.MapHttpRoute(
   name: "CreateUser",
   routeTemplate: "api/User/CreateUser",
   defaults: new { controller = "User", action = "CreateUser" }
);

这是端点:

[HttpPost]
public async Task<User> CreateUser([FromBody] User user)
{
    db.DirectUsers.Add(user);
    await db.SaveChangesAsync();
    return user;
}

我发送此帖子数据:

{
    "UserId" : 1
    "Name" : "Nick"
    "TwitterHandel" : "x"
}

收件人:http://localhost:56792/api/User/CreateUser

但是我得到了404

2 个答案:

答案 0 :(得分:0)

理想情况下,您不需要为每个操作方法添加路由。只有一个路由配置足以支持普通API。

如果您需要高级路由,可以查看Web API 2的属性路由。

public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();

    // This alone is enough.
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new {id = RouteParameter.Optional});

    ...
}

此外,您不应通过http://.../api/User/CreateUser访问。它实际上违背了使用Web API的目的,其中操作方法映射到HTTP Verbs。

所以你只需要HTTPOST到这个URL来创建一个新用户。

http://localhost:56792/api/User/

答案 1 :(得分:-1)

试试这个:

config.Routes.MapHttpRoute(
   name: "CreateUser",
   routeTemplate: "api/{controller}/{action}/{id}",
   defaults: new { controller = "User", action = "CreateUser", id = RouteParameter.Optional }
);