Web-Api-Controller in andere Projekt, route-Attribut nicht funktioniert
Ich habe eine Projektmappe mit zwei Projekten. Eine Web-Api bootstap-Projekt und die andere ist eine Bibliothek-Klasse.
Die Bibliothek-Klasse enthält eine ApiController mit Attribut-routing.
Ich füge einen Verweis von web-api-Projekt der Klasse die Bibliothek und erwarten, dass dies nur funktionieren.
Routing in web api konfiguriert ist:
config.MapHttpAttributeRoutes();
Die Steuerung ist einfach und sieht wie folgt aus:
public class AlertApiController:ApiController
{
[Route("alert")]
[HttpGet]
public HttpResponseMessage GetAlert()
{
return Request.CreateResponse<string>(HttpStatusCode.OK, "alert");
}
}
Aber ich bekomme ein 404, wenn man auf die url "/Alarm".
Was vermisse ich hier? Warum kann ich nicht mit diesem controller? Die Montage ist definitiv geladen, so dass ich glaube nicht, dass http://www.strathweb.com/2012/06/using-controllers-from-an-external-assembly-in-asp-net-web-api/ ist hier die Antwort.
Irgendwelche Ideen?
- Sind Sie sicher, dass die assembly geladen wird, wenn die MapAttributeRoutes genannt wird? Versuchen Sie, die Berufung auf einige dummy-statische Methode, Montage rechts, bevor Sie die Zuordnung.
- Immer noch nicht funktioniert, nicht durch die default-route noch Attribut-routing.
- Haben Sie jemals zu verwalten, um dies herauszufinden? Ich habe das gleiche problem (mehrere Baugruppen - plugins, etc - und die [RoutePrefix] - Attribut wird ignoriert.. ich kann nur die Dienste über die Standard-route config.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen. Erstellen Sie eine Klasse in Ihrer Klasse-Bibliothek-Projekt, das so aussieht,
Und wo immer Sie sind derzeit aufrufen der
config.MapHttpAttributeRoutes()
, rufen stattdessenMyApiConfig.Register(config)
.ApiController
's. Ob dies nur ein trick, um sicherzustellen, dass er wirklich hatte die Klasse Bibliothek geladen, die vor der Abbildung der Routen, dann ist mein ähnliches Problem muss anders sein.Eine Möglichkeit ist, Sie haben 2 Routen an verschiedenen Steuerungen mit dem gleichen Namen.
Hatte ich 2 Controller beide mit dem Namen "UploadController", die jeweils in einem anderen namespace und jeweils verziert mit einer anderen [RoutePrefix()]. Als ich versuchte, Zugang entweder über die route habe ich ein 404.
Begann es zu arbeiten, wenn ich änderte den Namen von einem der Controller. Es scheint, die Route-Attribut wird nur kodiert, auf den Namen der Klasse und ignoriert den namespace.
MapHttpRoute
wäre viel einfacher zu implementieren.Wir zu lösen versuchen ein ähnliches problem.
Die Routen in der externen Montage waren nicht die Registrierung korrekt.
Wir fanden ein zusätzliches detail, wenn Sie versuchen, die Lösung auf dieser Seite angezeigt.
Der Aufruf der externen assembly "MyApiConfig.Register" benötigt, um zu kommen, bevor der Anruf zu MapHttpRoute