首页 > 解决方案 > MVC & WebAPI“找到了多个与名为...的控制器匹配的类型”

问题描述

我有 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 路由指定命名空间的方法。

有一个很受好评的副本,但那是专门关于 MVC 控制器的。答案谈到了如上所述添加命名空间,这在这里没有帮助。在我的情况下,到 MVC 控制器的路由工作正常,只有 WebAPI 控制器有问题。

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

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

解决方案


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


推荐阅读