我正在使用ASP.NET MVC 4站点。我在Controllers文件夹中有一个ArtistController。
ArtistController有一个Get方法:
public ActionResult Get(string paramOne, string paramTwo)
在RouteConfig.cs中,我有这条路线,在默认路线之前:
routes.MapRoute(
name: "artistApi",
url: "api/artist/{action}/{id}",
defaults: new { controller = "Artist", action = "Get", id = UrlParameter.Optional }
);
当我尝试测试此呼叫时,我得到:
找不到与请求URI匹配的HTTP资源。未找到与名为'艺术家'。
的控制器匹配的类型
如果我从路线中移除api部分,它会起作用:
url: "artist/{action}/{id}"
我没有使用WebApi,只是一个普通的Controller。
知道为什么这条路线找不到控制器?
谢谢!
答案 0 :(得分:0)
很可能您的路线没有正确订购 - 如果api/
在您更具体的路线之前,它将首先匹配并且永远不会到达您的新路线。
// More specific routes should go before generic ones:
routes.MapRoute(
name: "artistApi",
url: "api/artist/{action}/{id}",...);
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
答案 1 :(得分:0)
如果我理解正确,
url:“api / artist / {action} / {id}”行将id作为查询字符串
ex www.yourwebsite / youractioncontroller / 1
你的actionResult需要两个查询字符串,MVC不知道该怎么做
更多的东西是“艺术家”需要通常是你的控制者 {控制器}
或您的艺术家控制器应为artistContoller
答案 2 :(得分:0)
确保您的App_Start文件夹中没有WebApiConfig.cs文件。这可能会覆盖您的路线定义。