我们都知道Web API 2路由约定以及如何使用以下内容自动映射到ApiController类型和操作:
config.Routes.MapHttpRoute(
"Default",
"api/{controller}/{action}"
);
public class AbcdefghijklmnoController : ApiController
{
public int Test()
{
return 5;
}
}
这按预期工作,我在调用api / Abcdefghijklmno / test时得到5。但是现在我想要创建最终没有明确结束Controller的Controller类型,并结合http://www.strathweb.com/2013/08/customizing-controller-discovery-in-asp-net-web-api/中概述的自定义Controller发现机制。
public class Abcdefghijklmno : ApiController
{
public int Test()
{
return 5;
}
}
现在疯狂的是我可以从路由api / abcde / test获得值5,所以基于约定的路由实际上正在做的就是从类型中删除字符串“Controller”的长度名称即可。除了Web API 2的这种非常天真的实现之外,还有什么方法可以避免这种情况吗?