Asp.net mvc 4 mvc4 web api路由表
我希望像这样访问资源:Asp.net mvc 4 mvc4 web api路由表,asp.net-mvc-4,asp.net-web-api-routing,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 }
/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>
找不到与名为“some controller”的控制器匹配的类型。
您在路由中遗漏了“api”,并且您似乎正在使用MVC路由
注意:这需要添加到WebApiConfig,而不是RouteConfig:
config.Routes.MapHttpRoute(
name: "AddDevice",
routeTemplate: "api/adddevice/{id}",
defaults: new { controller = "somecontroller", action = "adddevice", id = UrlParameter.Optional }
);
您错过了路由中的“api”,并且您似乎正在使用MVC路由 注意:这需要添加到WebApiConfig,而不是RouteConfig:
config.Routes.MapHttpRoute(
name: "AddDevice",
routeTemplate: "api/adddevice/{id}",
defaults: new { controller = "somecontroller", action = "adddevice", id = UrlParameter.Optional }
);
您说您希望url如下所示:
/api/adddevice/12345
但您的路线图具有以下特点:
url: "adddevice/{id}",
看看怎么不匹配?映射在开始时没有api/
。MapRoute()
调用中声明的URL必须匹配所有URL(当然,主机部分除外)。从正在键入的URL中删除/api/
,或将其添加到正在映射的URL中
顺便说一句,
routes.MapRoute()
用于MVC;对于WebApi,您希望config.Routes.MapHttpRoute()
您说您希望url如下:
/api/adddevice/12345
但您的路线图具有以下特点:
url: "adddevice/{id}",
看看怎么不匹配?映射在开始时没有api/
。MapRoute()
调用中声明的URL必须匹配所有URL(当然,主机部分除外)。从正在键入的URL中删除/api/
,或将其添加到正在映射的URL中
顺便说一句,
routes.MapRoute()
用于MVC;对于WebApi,您需要的config.Routes.MapHttpRoute()
对我来说不起作用。。。。这里我不使用[api]:routes.MapRoute(名称:“Default”,url:“{controller}/{action}/{id}”,默认值:new{controller=“PDF”,action=“GetServiceInfo”,id=UrlParameter.Optional});这对我来说是行不通的。。。。这里我不使用[api]:routes.MapRoute(名称:“Default”,url:“{controller}/{action}/{id}”,默认值:new{controller=“PDF”,action=“GetServiceInfo”,id=UrlParameter.Optional});我希望mvc框架在默认情况下添加了[api]以将api控制器与通常的api控制器分开——让我惊讶的是,当我将[api]附加到这个sheme:url中的请求url时,action metod不可用:“adddevice/{id}”我不确定这是为什么;URL根本不匹配。它们甚至没有相同数量的元素。您正在键入以“api”开头的内容,而路由映射正在查找以“adddevice”开头的内容。很简单。“api”!=“adddevice”。我理解。此行为是针对sheme{controller}{action}/api/controller/action/44我希望mvc框架在默认情况下添加了[api]以将api控制器与通常的api控制器分开——让我惊讶的是,当我将[api]添加到这个sheme中的请求url时,action metod不可用:url:“adddevice/{id}”我不确定这是为什么;URL根本不匹配。它们甚至没有相同数量的元素。您正在键入以“api”开头的内容,而路由映射正在查找以“adddevice”开头的内容。很简单。“api”!=“adddevice”。我理解。此行为是针对sheme{controller}{action}/api/controller/action/44