C# 找不到控制器

C# 找不到控制器,c#,asp.net,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-routing,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc Routing,我正在一个ASP.NETMVC4网站上工作。我在Controllers文件夹中有一个ArtistController ArtistController有一个Get方法: public ActionResult Get(string paramOne, string paramTwo) 在RouteConfig.cs中,在默认路由之前,我有以下路由: routes.MapRoute( name: "artistApi", url: "api/art

我正在一个ASP.NETMVC4网站上工作。我在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,只是一个普通的控制器

知道为什么这条路线找不到控制员吗


谢谢

最有可能的是您的路线没有正确排序-如果
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 }
);

如果我理解正确

url:“api/artist/{action}/{id}”行将id作为您的查询字符串

例如www.yourwebsite/youractioncontroller/1

您的actionResult需要两个查询字符串,MVC不知道该做什么

还有一件事是“艺术家”需要成为你的控制器 {控制器}


或者,您的艺术家控制器应该是ArtistController

请确保您的App\u Start文件夹中没有WebApiConfig.cs文件。这可能会覆盖您的路由定义。

测试URL是什么样子的?URL是这样的:api/Artist/Albums?paramOne=ArtistName¶mTwo=OtherValue我已将URL值更改为“test/Artist/{action}”,现在它正在工作。在我看来,您只能使用web api使用“api/controller”。有什么想法吗?听起来很合理。。。但是我有一个url:api/Artist/Albums?paramOne=ArtistName¶mTwo=otherValue,我如何创建路由来接受它?可能类似于{controller}/{action}/{paramOne}/{paramTwo}/No,路由的顺序正确。这不是问题。是的,这是问题所在。我卸载了web API,它工作了。谢谢