Ich stieß auf dies Juwel, das dem zu entsprechen schien, was ich wollte. Ich möchte jedoch die bereits geschriebenen Controller von einer referenzierten Assembly verwenden.
Mein erster Fehler bestand darin, die Assembly zu referenzieren, die Routing-Regeln wie beim ursprünglichen webAPI-Projekt einzurichten und zu gehen, aber jedes Mal, wenn ich versuche, den selbst gehosteten Service aufzurufen, erhalte ich 400s. Ich habe mit Fiddler die Innereien der Anfrage ausgewählt, und abgesehen von den Adressunterschieden sind die Anfragen gegen das webAPI-Projekt und das selbst gehostete Projekt identisch.
Ich denke, das sollte relativ einfach sein, aber ich habe keine akzeptable Antwort gefunden.
Dies scheint ein bekanntes Problem zu sein. Sie müssen das .NET zwingen, die Assemblys mit den benötigten Controllern zu laden.
Bevor Sie die Web-API selbst hosten, sollten Sie einen Typ aus der Referenzbaugruppe abrufen, der von der Laufzeitumgebung geladen werden soll. Etwas wie das:
%Vor%Dies sollte die Controller von dieser Assembly laden und es wird Ihnen kein Fehler 404 geben.
Vorherige Beiträge von Praveen und Janushirsha führen mich in die richtige Richtung, die ich hier fortsetze:
%Vor% Sie sollten also IAssembliesResolver
durch:
Hier ist ein Beispiel der Implementierung für CustomAssembliesResolver
Dieser Code kann leicht angepasst werden, wenn auf Baugruppen von Drittanbietern nicht verwiesen wird oder wenn Sie eine späte Assemblybindung wünschen.
Hoffe diese Hilfe.
Tags und Links asp.net-web-api .net self-hosting