【发布时间】:2015-08-10 03:10:55
【问题描述】:
我有控制器
public class TestController : ApiController
{
[HttpGet]
public string Test()
{
return "test";
}
}
与
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes(new CustomDirectRouteProvider());
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
和
public class CustomDirectRouteProvider : DefaultDirectRouteProvider
{
protected override IReadOnlyList<IDirectRouteFactory>
GetActionRouteFactories(HttpActionDescriptor actionDescriptor)
{
return actionDescriptor.GetCustomAttributes<IDirectRouteFactory>
(inherit: true);
}
}
它应该像它应该的那样工作,但是如果我让它像它那样
public class TestController : ApiControllerBase
{
[HttpGet]
public string Test()
{
return "test";
}
}
public class ApiControllerBase : ApiController
{
}
我得到 404 找不到与名为“测试”的控制器匹配的类型。
我做错了什么?我添加了 CustumRouteProvider 甚至认为我认为它仅用于注释,但我也尝试过,但没有运气。有什么想法吗?
【问题讨论】:
-
无法复制。请创建一个重现问题的示例。
-
你的例子是什么意思?此代码已添加到现有的 MVC 4 应用程序中,问题可能出在旧代码中,但我想不出任何会导致此问题的原因
-
这个确切的代码在 WebAPI 2 中适用于我。
-
我在新项目中尝试过它并且它正在工作,但它在我在上面评论中描述的情况下不起作用。还有一点需要注意的是,这个控制器在一个区域内,而基本控制器在另一个项目内,但这无关紧要。想不出还有什么要告诉你的
标签: .net asp.net-web-api asp.net-web-api2 asp.net-web-api-routing