无法找到控制器

时间:2014-04-21 19:25:34

标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

我正在使用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。

知道为什么这条路线找不到控制器?

谢谢!

3 个答案:

答案 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文件。这可能会覆盖您的路线定义。