【问题标题】:WebApi Route with Nested Class带有嵌套类的 WebApi 路由
【发布时间】:2014-07-11 15:36:57
【问题描述】:

是否可以将 MapHttpRoute 映射到嵌套的 ApiController 类?如果是,RouteTemplate 是通过什么实现的?

示例嵌套控制器:

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

我尝试过使用

GET ApiRoute/whatever+nested/five

作为 typeof(whatever.NestedController) 报告whatever+NestedController 但我得到了

没有找到与控制器匹配的类型

【问题讨论】:

  • 你试过GET ApiRoute/nested/five(没有'whatever')吗?
  • 是的,同样的“找不到类型......”响应。

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


【解决方案1】:

似乎路由引擎只寻找具体的类。它们位于哪个程序集或它们位于哪个命名空间无关紧要,但它们不能嵌套在另一个类中,也不能是抽象的。

一个好处(虽然有点牵强)是您可以在 DLL 中“隐藏”控制器并在 Web 应用程序中激活它们,如下所示:

DLL:

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

网络应用:

public class MyController : Wrapper.MyController { }

说了这么多,我不推荐。最好按照设计使用东西,因为您可能会打开安全漏洞或使应用程序易受 API 更新的影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 2019-08-28
    • 2017-05-19
    • 1970-01-01
    • 2018-03-15
    相关资源
    最近更新 更多