C# Web API中的路由/操作中断

C# Web API中的路由/操作中断,c#,c#-4.0,asp.net-web-api,asp.net-web-api-routing,C#,C# 4.0,Asp.net Web Api,Asp.net Web Api Routing,我在WebApiConfig.cs中定义了默认路由: config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional, page = 20, offset = 0 } ); 在我的控制器中,我

我在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);
    }
//获取api/用户
[HttpGet]
公共IEnumerable Get(字符串id、整型页、整型偏移量)
{
返回id!=null
?新用户[]{Get(id)}
:_userService.All().Skip(偏移量*页)。Take(页);
}
我知道这是最近的工作,但现在我得到了臭名昭著的“没有在控制器'用户'上找到与请求匹配的操作”错误。我似乎不知道发生了什么变化。自从添加页面/偏移量的默认值以来,我已经撤消了所有更改,但仍然没有任何更改

有什么想法吗


请求url:
http://localhost/api/api/Users

您尚未在路由中指定操作。您需要将
{action}
片段添加到URL,或者在
默认对象中指定操作。

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

此处参数“id”是可选的,但操作选择器希望在操作中为其指定默认值

公共IEnumerable Get(字符串id=null,整数页,整数偏移量)


同样关于url,可能是打字错误,您的意思是
http://localhost/api/Users
而非
http://localhost/**api/api**/Users

此处参数“id”是可选的,但操作选择器希望在操作中为其指定默认值

公共IEnumerable Get(字符串id=null,整数页,整数偏移量)


同样关于url,可能是打字错误,您的意思是
http://localhost/api/Users
而非
http://localhost/**api/api**/Users

您的
url
对于此操作是什么样子的?@CuongLe您的
url
对于此操作是什么样子的?@CuongLe不太可能如图所示,注册是针对Web api的(注意
MapHttpRoute
-不是
MapRoute
)@AlexeiLevenkov:您仍然需要一个操作。WebAPI的默认路由也包含一个。路由中从来没有操作。这是MVC4 web api项目默认设置的。不太可能出现如图所示的情况,注册为web api(注意
MapHttpRoute
-不是
MapRoute
)@AlexeiLevenkov:您仍然需要一个操作。WebAPI的默认路由也包含一个。路由中从来没有操作。这是mvc 4 web api项目设置的默认路由。将路由定义更新为
id=“”
而不是
id=RouteParameter。可选的
似乎让它再次工作。现在我需要查看结果可能出现的问题。将路由定义更新为
id=”“
而不是
id=RouteParameter。可选的
似乎让它再次工作。现在我需要查看结果可能出现的问题。