C# Web API URI版本未按预期工作

C# Web API URI版本未按预期工作,c#,asp.net-web-api,asp.net-core,C#,Asp.net Web Api,Asp.net Core,我正在尝试使用URI版本控制,但是我有点困惑,为什么我会收到以下错误: <Error> <Message> No HTTP resource was found that matches the request URI 'http://localhost:61496/api/v1/foo/create'. </Message> <MessageDetail> No type was found that matches the controller

我正在尝试使用URI版本控制,但是我有点困惑,为什么我会收到以下错误:

<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost:61496/api/v1/foo/create'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'foo'.
</MessageDetail>
</Error>
更新这项工作,但为什么

 [Route("api/v1/foo/create")]
    [HttpGet]
    public Foo Create()
    {
        return _ifoo.Create();
    }

根据显示的配置,您正在使用而不是

路由模板中的令牌替换,如
[controller]
[action]
,仅添加到较新的asp.net-core版本中

为方便起见,属性路由通过将令牌括在方括号中(
[
]
)来支持令牌替换。令牌
[action]
[area]
[controller]
替换为定义路由的操作中的操作名称、区域名称和控制器名称的值

参考文献

这就是当您尝试浏览到
api/v1/foo/create
时,
[Route(“api/v1/[controller]/create”)]
不起作用的原因,因为前者在正在使用的框架版本中被视为文本字符串


参考

非常奇怪,似乎您必须将名称硬编码到路线中。这似乎已经解决了它。[Route(“api/v1/foo/create”)][HttpGet]public foo create(){return_ifoo.create()}我会让它保持打开状态,因为我想理解,为什么?!
 public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/v1/{controller}/{id}", //v1 specified
                defaults: new { id = RouteParameter.Optional }
            );
        }
 [Route("api/v1/foo/create")]
    [HttpGet]
    public Foo Create()
    {
        return _ifoo.Create();
    }