ASP.NET Web Api 2路由约定奇怪的实现

时间:2017-04-07 12:16:01

标签: c# asp.net asp.net-web-api routing

我们都知道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的这种非常天真的实现之外,还有什么方法可以避免这种情况吗?

0 个答案:

没有答案