C# 未调用Web API路由
这是我的web API配置:C# 未调用Web API路由,c#,asp.net,.net,asp.net-web-api,asp.net-web-api-routing,C#,Asp.net,.net,Asp.net Web Api,Asp.net Web Api Routing,这是我的web API配置: public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); config.Routes
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "ReaderTags",
routeTemplate: "Reader/{readerID}/Tags"
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
我希望当我调用我的URL/Reader/abc/Tags
时,它应该调用我的ReaderController的Tags操作,并将abc
作为字符串参数传递
但不知何故,它使用了DefaultAPI
的路径,并试图在ReaderController
中查找abc
我缺少什么?路由映射缺少默认值,这些默认值会让路由表知道要为与模板匹配的路由调用什么控制器和操作
config.Routes.MapHttpRoute(
name: "ReaderTags",
routeTemplate: "Reader/{readerID}/Tags",
defaults: new { controller = "Reader", action = "Tags" }
);
路由模板还假定操作上的字符串参数共享相同的名称:即:readerID
public IHttpActionResult Tags(string readerID) {
//...
}
由于config.maphttpAttribute路由()还配置了code>,然后可以通过属性路由而不是像这样基于约定的路由来实现相同的功能
//GET Reader/abc/Tags
[HttpGet]
[Route("Reader/{readerID}/Tags")]
public IHttpActionResult Tags(string readerID) {
//...
}
好东西