2014-05-06 7 views
10

Ich habe meine Web-API-Anwendung auf Web Api 2 portiert und ninject Web API-Paket installiert. Aber jetzt bekomme ich einen Fehler:NinjectHttpApplication funktioniert nicht nach der Portierung auf Web-API 2

Error activating ModelValidatorProvider using binding from ModelValidatorProvider to NinjectDefaultModelValidatorProvider 

A cyclical dependency was detected between the constructors of two services. 
+0

Haben Sie Ninject.Web.WebApi 3.2.0.0 von Nuget? – sunil

+0

Ja, das ist richtig –

Antwort

2

Hat es nicht geschafft, es zum Laufen zu bringen. Als Workaround haben Sie das Ninject.Web.WebApi-Paket vollständig entfernt und verwenden nun den handrollierten Web-API-Abhängigkeits-Resolver für Ninject. Um ehrlich zu sein, es ist so einfach, dass ich keinen Grund sehe, dieses nugget-Paket für die Integration mit ninject zu verwenden.

+1

Hallo zusammen, ich stoße auf das gleiche Problem, aber ich verweise nicht auf das Ninject.Web.WebApi-Paket. Die einzigen 2, die ich referenziere, sind Ninject und Ninject.Web.Common. Was war deine Lösung dafür? Können Sie den von Ihnen verwendeten handabrollten API-Abhängigkeits-Resolver bereitstellen? – MikeAtCodeSmart

+1

Mir ist klar, dass es wahrscheinlich schon zu spät, aber hier ist es: https://gist.github.com/Deadarius/7d68b5d82a8a9ddad59e#file-ninjectdependencyresolver-cs –

+0

Dieser Kern wird nicht alle Infrastruktur bietet Web-api 2 Injektion zu ermöglichen. –

18

Ich hatte das gleiche Problem. Ich habe es bekommen, als ich Ninject.Web.WebApi als Nuget-Paket hinzugefügt habe.

das Problem zu beheben, hatte ich eine Abhilfe zu entfernen, die ich vorher umgesetzt hatte.

In der vorherige Abhilfe hatte ich den Abhängigkeitsauflöser in NinjectWebCommon zu einer benutzerdefinierten Klasse festlegen, die IDependencyResolver implementiert.

Kurz gesagt, wenn Sie eine ähnliche Zeile wie GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel); in NinjectWebCommon CreateKernel() haben, entfernen Sie es.

+0

Danke. Scheint, dass Problemumgehung üblich war :) –

+0

Danke. Das Entfernen dieser Zeile funktionierte für mich. – Hink

+0

Das hat auch für mich funktioniert. Ich selbst habe den Workaround nach diesem Artikel [link] (http://www.peterprovost.org/blog/2012/06/19/adding-ninject-to-web-api/) angewendet, bevor ich das nuget-Paket Ninject.Web installiert habe .WebApi – Daniele