路由 – 为什么这个Web Api路由不起作用?

所以在我的WebApi配置中,我添加了一条新路线

    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
        config.Routes.MapHttpRoute(
            name: "ControlPanelApi",
            routeTemplate: "cp/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }

我有控制器

public class SwitchUserController : BaseApiController
{
    public HttpResponseMessage Put(int id) {
        return Request.CreateResponse(HttpStatusCode.OK);
    }   
}

然而在铬:

Request URL:http://localhost:1352/cp/SwitchUser/123
Request Method:PUT
Status Code:404 Not Found

我一直使用默认的web api路由.我错过了什么?

最佳答案 我在一个小的测试web api项目中尝试了这些路由,一切正常.

但这是我的建议.
尝试在两个不同的项目中拆分您的解决方案.
首先是config.file

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

第二个

public static void Register(HttpConfiguration config)
{
   config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "cp/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}

在您选择的Web服务器中正确注册这些站点,您就完成了.
这种方法应该有效.
此外,使用这种技术,您可以避免两个URL访问多个控制器的情况:api / someController和cp / someController

点赞