c# - 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 控制器具有相同的名称,但这是我遇到错误的唯一一个。
解决方案
如果更改了项目名称,则必须删除 bin 文件夹中旧项目名称的文件。
推荐阅读
- jmeter - 如何将 JMeter 中的时间转换为 24 小时格式,同时使用 shiftTime 函数将 IST 转换为 UTC 格式?
- aws-lambda - Lambda 层未与无服务器一起安装
- javascript - 部分幻灯片从光滑滑块左侧的完整幻灯片开始
- c# - 如何在旧版 Windows 服务应用程序中向 ILogger 注册 Serilog?
- python - 具有多个规范器的 Sklearn 管道
- ios - 在 iOS 中,AVCaptureSession 的输入顺序是否重要?可以有重复吗?
- python - 在 pandas 列中搜索字符串
- node.js - 创建 Cube.js API 时出错 - 多维数据集存储失败
- outlook - 仅适用于原始邮件的 Outlook 规则
- c# - Entity Framework Core 3.1 脚手架生成隐藏列