我有控制器
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没有找到与名为&#39; Test&#39;。
的控制器相匹配的类型我做错了什么?我添加了CustumRouteProvider,甚至认为我认为它只用于注释,但我也尝试过,但没有运气。有什么想法吗?
答案 0 :(得分:0)
问题是ApiControllerBase在另一个项目中,即使该项目有所有引用并正常编译。奇怪的。