1

我在 WebApiConfig.cs 中定义了我的默认路由:

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional, page = 20, offset = 0 }
        );

在我的控制器中,我有一个动作:

    // GET api/users
    [HttpGet]
    public IEnumerable<User> Get(string id, int page, int offset)
    {
        return id != null 
            ? new User[]{Get(id)} 
            : _userService.All().Skip(offset*page).Take(page);
    }

我知道这是最近工作的,但现在我得到了臭名昭著的“在控制器'用户'上找不到与请求匹配的操作”错误。我似乎无法弄清楚(如果有的话)发生了什么变化。自从添加页面/偏移的默认值以来,我已经撤消了所有更改,但仍然没有。

有任何想法吗?

请求网址:http://localhost/api/api/Users

4

2 回答 2

4

这里参数 'id' 是可选的,但动作选择器希望在动作上为其指定一个默认值。

public IEnumerable Get(string id = null , int page, int offset)

另外关于网址,可能是一个错字,你的意思是http://localhost/api/Users而不是http://localhost/**api/api**/Users

于 2013-04-17T17:15:01.680 回答
0

您尚未在路线中指定操作。您要么需要在{action}URL 中添加一个片段,要么在default对象中指定操作。

于 2013-04-17T16:59:44.640 回答