0

我想要这样的访问资源:

     /api/adddevice/12345

这条路线有什么不正确的?

    routes.MapRoute(
            name: "AddDevice",
            url: "adddevice/{id}",
            defaults: new { controller = "some controller", action = "adddevice", id = UrlParameter.Optional }
    );


    public string AddDevice(int id)
    {
        return "Device " + id.ToString() + " succesfully added";
    }

编辑

以下是错误详情:

     <MessageDetail>
        No type was found that matches the controller named 'some controller'.
     </MessageDetail>
4

2 回答 2

3

你说你希望网址是这样的:

/api/adddevice/12345

但你的路线映射有这个:

url: "adddevice/{id}",

看看怎么不匹配?映射api/在开始时没有。调用中声明的 URLMapRoute()必须匹配所有的 URL(当然除了主机部分)。/api/从您正在输入的 URL中删除,或将其添加到您正在映射的 URL。

顺便说一句,routes.MapRoute()是针对 MVC 的;对于你想要的 WebApi config.Routes.MapHttpRoute()

于 2013-03-12T16:50:11.087 回答
1

您错过了路由中的“api”,并且您似乎正在使用 MVC 路由。

请注意,这需要添加到 WebApiConfig 而不是 RouteConfig:

config.Routes.MapHttpRoute(
                name: "AddDevice",
                routeTemplate: "api/adddevice/{id}",
                defaults: new { controller = "somecontroller", action = "adddevice", id = UrlParameter.Optional }
                );
于 2013-03-12T16:18:33.127 回答