具有嵌套类的Web Api路由

时间:2014-07-11 15:36:58

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

MapHttpRoute可以嵌套到ApiController类吗?如果是,那么RouteTemplate会实现什么目标?

嵌套控制器示例:

public class whatever
{
    public class NestedController : ApiController
    {
        [HttpGet]
        public object five()
        {
            return 5;
        }
    }
}

我尝试过使用

GET ApiRoute/whatever+nested/five

as typeof(whatever.NestedController)报告任何+ NestedController,但我得到

  

找不到与控制器匹配的类型

1 个答案:

答案 0 :(得分:0)

似乎路由引擎只查找具体类。它们所处的装配或它们所处的命名空间并不重要,但它们不能嵌套在另一个类中,它们不能是抽象的。

一个好处(虽然它是一个延伸)是你可以"隐藏" DLL中的控制器并在Web应用程序中激活它们,如下所示:

DLL:

public class Wrapper { public class MyController : ApiController { /*code goes here*/ } }

网络应用程序:

public class MyController : Wrapper.MyController { }

所有这一切,我不推荐它。最好使用设计的东西,因为您可能会面临打开安全漏洞或使应用程序易受API更新的影响。