找不到控制器

本文关键字:控制器 找不到 | 更新日期: 2023-09-27 17:59:24

我正在开发一个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,只是一个普通的控制器。

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

谢谢!

找不到控制器

确保您的App_Start文件夹中没有WebApiConfig.cs文件。这可能会覆盖您的路线定义。

很可能您的路线没有正确排序-如果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不知道该怎么做

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

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