我想要这样的访问资源:
/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>
答案 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 }
);