IIS Express上托管的ASP.NET WebAPI2从2个不同的项目加载控制器

时间:2016-05-05 21:12:41

标签: c# asp.net asp.net-web-api2 owin

我创建了一个包含许多OWIN WebApi2项目的解决方案。其中两个项目的控制器具有相同的路径。

当我尝试启动第一个项目时,收到此错误消息:

Multiple controller types were found that match the URL. 
This can happen if attribute routes on multiple controllers match the requested URL. 
The request has found the following matching controller types: 
Project1.WebApi.Controllers.Project1Controller Project2.WebApi.Controllers.Project2Controller

但是,两个项目都使用不同的命名空间,并且它们之间没有任何依赖关系。

为什么project2的控制器会被Project1的控制器加载?

谢谢

1 个答案:

答案 0 :(得分:3)

  

但是,两个项目都使用不同的命名空间,并且没有任何名称空间   它们之间的依赖关系。

这没关系。在运行时,ASP.NET Web API将检查从pop继承的所有引用程序集中的所有类型,并将其视为候选。因此,即使您在2个完全不同的项目中有2个不同的控制器,只要它们具有路径冲突,此碰撞将在运行时显示。您将需要修复您的应用程序,以便您永远不会将2个控制器加载到具有相同路由的运行时中。当您考虑它时,这实际上很有意义:给定一个路由,如果两个控制器都定义完全相同的路由,ASP.NET Web API就不会知道要调用哪两个控制器。在这种情况下,一旦应用程序启动,就会在运行时检测到此异常,以便尽快通知开发人员此问题。