2012-03-29 8 views
4

Mein kleines Web-API-Projekt (gehostet über SelfHostHttpServer) hat ein paar Abhängigkeiten, die ich in die Controller injizieren möchte. Um dies zu tun, habe ich IDependencyResolver implementiert und httpConfig.ServiceResolver.SetResolver genannt.ASP.Net Web API DependencyResolver - Framework versucht, zahlreiche interne Abhängigkeiten aufzulösen, die mir egal sind?

Diese würde funktionieren gut, außer es scheint, ich muss die internen Abhängigkeiten erfüllen die Web-API erfordert. Als ich das erste Mal lief, sah ich, dass es die Controller-Fabrik auflösen musste, also fügte ich meinem Container eine Instanz von DefaultHttpControllerFactory hinzu. Jetzt jede verdammte Zeit, die ich die Seite aktualisiere, stürzt es mit der nächsten ungelösten Abhängigkeit ab, die das Rahmenwerk versucht zu lösen.

Gehe ich in die falsche Richtung, oder soll ich wirklich alle Standardimplementierungen erraten und durch diesen Crash-Fix-Refresh-Zyklus gezwungen werden herauszufinden, welche Abhängigkeiten für das Web-API-Framework erforderlich sind richtig arbeiten?

Antwort

5

Was macht Ihr Resolver, wenn er die Abhängigkeit nicht auflösen kann? Das richtige Verhalten sollte null zurückgeben. ASP.NET Web API DependencyResolver (httpConfig.ServiceResolver) intern mit zwei Resolver:

  • Die Sie durch SetResolver gesetzt (Benutzer rosolver)
  • Die eingebauten DefaultServiceResolver

Wenn Benutzer Resolver zurückkehrt Wenn die Abhängigkeit null ist, greift die Web-API auf DefaultServiceResolver zurück, das alle integrierten Abhängigkeiten verarbeiten kann.

+0

Großartig, das hat sehr geholfen, danke! –

+0

Geben Sie null von GetService und eine leere Liste von GetServices zurück. http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver –

Verwandte Themen