mvc4 web api route sheme

时间:2013-03-12 16:12:00

标签: asp.net-mvc-4 asp.net-web-api-routing

我想要这样的访问资源:

     /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>

2 个答案:

答案 0 :(得分:3)

你说你想要网址是这样的:

/api/adddevice/12345

但你的路线图有这个:

url: "adddevice/{id}",

看看它不匹配?映射在开始时没有api/MapRoute()调用中声明的网址必须与网址的所有相匹配(当然,主机部分除外)。从您要输入的网址中删除/api/,或将其添加到您要映射的网址中。

顺便说一下,routes.MapRoute()用于MVC;对于WebApi,您需要config.Routes.MapHttpRoute()

答案 1 :(得分:1)

你错过了路线中的'api',你似乎正在使用MVC路由。

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

config.Routes.MapHttpRoute(
                name: "AddDevice",
                routeTemplate: "api/adddevice/{id}",
                defaults: new { controller = "somecontroller", action = "adddevice", id = UrlParameter.Optional }
                );