2016-05-05 10 views
0

Ich habe eine Lösung erstellt, die viele OWIN WebApi2-Projekte enthält. Zwei dieser Projekte haben einen Controller mit der gleichen Route.ASP.NET WebAPI2 gehostet auf IIS Express lädt Controller aus 2 verschiedenen Projekten

Wenn ich versuche, das erste Projekt zu starten, erhalte ich diese Fehlermeldung:

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 

jedoch beiden Projekte verschiedene Namensräume verwenden und haben keine Abhängigkeiten zwischen ihnen.

Wie kommt es, dass die Controller von project2 mit den Controllern von Project1 geladen werden?

Dank

+0

könnten Sie bitte Ihren Code posten, um zu sehen .. –

Antwort

3

verwenden jedoch beide Projekte verschiedene Namensräume und haben keine Abhängigkeiten zwischen ihnen.

Dies ist nicht wichtig. Zur Laufzeit prüft die ASP.NET-Web-API alle Typen in allen referenzierten Assemblys, die von ApiController erben, und berücksichtigt sie als Kandidaten. Selbst wenn Sie zwei verschiedene Controller in zwei völlig verschiedenen Projekten haben, wird diese Kollision zur Laufzeit auftreten, solange sie eine Kollision mit der Route haben. Sie müssen Ihre Anwendung reparieren, so dass Sie nie zwei Controller mit denselben Routen in die Laufzeitumgebung geladen haben. Und wenn Sie darüber nachdenken, macht dies tatsächlich viel Sinn: Bei einer Route würde ASP.NET Web API nicht wissen, welcher der beiden Controller aufgerufen werden soll, wenn beide genau die gleiche Route definieren. Und in diesem Fall wird diese Anomalie zur Laufzeit erkannt, sobald die Anwendung gestartet wird, so dass der Entwickler so schnell wie möglich über dieses Problem informiert wird.