Self-Hosting-WebAPI-Anwendung, die auf Controller von einer anderen Assembly verweist

8

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.

    
Ross 11.06.2012, 23:30
quelle

3 Antworten

5

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.

    
cypressx 05.07.2012, 07:54
quelle
8

Vorherige Beiträge von Praveen und Janushirsha führen mich in die richtige Richtung, die ich hier fortsetze:

%Vor%

Sie sollten also IAssembliesResolver durch:

ersetzen %Vor%

Hier ist ein Beispiel der Implementierung für CustomAssembliesResolver

%Vor%

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.

    
Eric Boumendil 26.06.2014 15:27
quelle
3

diese link speicherte meinen Tag für das gleiche Problem:) ...

Ich muss nur die unten stehende Anweisung ändern, damit sie für die Web-Appi-Konfiguration von selfhost geeignet ist.

%Vor%

mit

%Vor%     
Praveen 15.12.2012 16:23
quelle