MVC和WebAPI“找到了与名为...的控制器匹配的多种类型”

时间:2019-05-13 13:54:24

标签: c# asp.net-mvc asp.net-web-api asp.net-web-api-routing

我在使用MVC和WebAPI控制器时遇到路由问题。

错误是:

  

找到与名为“ Log”的控制器匹配的多种类型。这个   如果为该请求提供服务的路线可能会发生   ('api / {controller} / {action} / {id}')找到了定义的多个控制器   名称相同但名称空间不同,不支持。   “日志”请求已找到以下匹配的控制器:   MyNamespace.Controllers.LogController   MyNamespace.Controllers.WebAPI.LogController

我的路由很简单:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

我尝试为WebAPI添加其他路由,例如:

routes.MapHttpRoute(
    name: "API",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

为MVC路由添加名称空间:

namespaces: new[] { "MyNamespace.Controllers" }

但是我仍然收到相同的错误。我看不到为WebAPI路由指定名称空间的方法。

有一个well-upvoted duplicate,但这是专门关于MVC控制器的。答案是关于添加上述名称空间的,此处无济于事。以我为例,到MVC控制器的路由工作正常,只有我遇到问题的WebAPI控制器。

奇怪的是,我所有其他的WebAPI控制器都与MVC控制器同名,但这是我遇到错误的唯一原因。

1 个答案:

答案 0 :(得分:0)

如果更改了项目名称,则必须删除bin文件夹中具有旧项目名称的文件。