C# Web API URI版本未按预期工作
我正在尝试使用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
<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();
}