3

所以我只是花了一个小时来调试为什么我收到客户端 404 和服务器System.Web.Http.HttpResponseExceptionSystem.Web.Http.dll!System.Web.Http.Dispatcher.DefaultHttpControllerSelector.SelectController(System.Net.Http.HttpRequestMessage request) + 0x33f byte; 无论我尝试什么,我都无法让我的 ApiController 衍生产品接收请求。

最后,在尝试将其转换为常规Controller无效后,我想到将名称从更改APIControllerAPIXController仅以使一切正常。

  1. 它在哪里声明API是保留的控制器名称?
  2. 保留控制器名称的完整列表在哪里?
  3. 是否可以绕过使用APIController我的班级名称的限制,如果可以,我该怎么做?

我检查的第一件事是我的路线配置,这是沼泽标准

routes.MapRoute(
                "Default",
                "{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
4

1 回答 1

3

APIController 不是保留名称。但是,如果您使用的是标准 MVC4 模板,那么默认情况下它包含一个 WebAPI 堆栈的实例,并且这会注册一个以 /api 开头的路由

你很可能会遇到这种情况。

查看 AppStart 下的 WebApiConfig.cs 文件。

顺便说一句,关键的调试症状是 WebApi 使用的 System.Web.Http 中的任何内容,并且不会出现在 MVC 应用程序中。

于 2013-03-07T03:05:03.250 回答