带嵌套类的WebApi路由
本文关键字:WebApi 路由 嵌套 | 更新日期: 2023-09-27 18:12:27
是否可以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)报告whatever+NestedController但是我得到
没有找到与控制器匹配的类型
似乎路由引擎只查找具体的类。它们在哪个程序集或哪个命名空间中并不重要,但它们不能嵌套在另一个类中,也不能是抽象的。
一个好处(虽然这是一个延伸)是,你可以"隐藏"在DLL中的控制器,并激活它们在一个Web应用程序,像这样:
DLL:
public class Wrapper { public class MyController : ApiController { /*code goes here*/ } }
Web应用程序:
public class MyController : Wrapper.MyController { }
话虽如此,我还是不推荐。最好按照设计来使用,因为你可能会打开一个安全漏洞,或者使应用程序容易受到API更新的影响。