【问题标题】:Web Api 2 BaseControllerWeb API 2 基础控制器
【发布时间】:2015-08-10 03:10:55
【问题描述】:

我有控制器

public class TestController : ApiController
{
   [HttpGet]
   public string Test()
   {
      return "test";
   }
}

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes(new CustomDirectRouteProvider());

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

public class CustomDirectRouteProvider : DefaultDirectRouteProvider
{
    protected override IReadOnlyList<IDirectRouteFactory>
    GetActionRouteFactories(HttpActionDescriptor actionDescriptor)
    {
        return actionDescriptor.GetCustomAttributes<IDirectRouteFactory>
        (inherit: true);
    }
}

它应该像它应该的那样工作,但是如果我让它像它那样

public class TestController : ApiControllerBase
{
   [HttpGet]
   public string Test()
   {
      return "test";
   }
}

public class ApiControllerBase : ApiController
{
}

我得到 404 找不到与名为“测试”的控制器匹配的类型。

我做错了什么?我添加了 CustumRouteProvider 甚至认为我认为它仅用于注释,但我也尝试过,但没有运气。有什么想法吗?

【问题讨论】:

  • 无法复制。请创建一个重现问题的示例。
  • 你的例子是什么意思?此代码已添加到现有的 MVC 4 应用程序中,问题可能出在旧代码中,但我想不出任何会导致此问题的原因
  • 这个确切的代码在 WebAPI 2 中适用于我。
  • 我在新项目中尝试过它并且它正在工作,但它在我在上面评论中描述的情况下不起作用。还有一点需要注意的是,这个控制器在一个区域内,而基本控制器在另一个项目内,但这无关紧要。想不出还有什么要告诉你的

标签: .net asp.net-web-api asp.net-web-api2 asp.net-web-api-routing


【解决方案1】:

问题是 ApiControllerBase 在另一个项目中,即使该项目具有所有引用并正常编译。奇怪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多