2012-10-06 25 views
6

Attualmente sto utilizzando ninject.mvc3 nel mio progetto asp.net webapi e funziona correttamente. Ora sto cercando di associare gli attributi del filtro, ma l'interfaccia IKernel manca all'interfaccia BindFilter e quando si utilizza il metodo di classe statica NinjectWebCommon. Se aggiungo il pacchetto Ninject.Web.WebApi, ma è presente ma il progetto non viene eseguito (problema here, la soluzione dice che Ninject.Web.WebApi è deprecato) quindi l'ho rimosso.Utilizzo di Ninject per il binding degli attributi del filtro WebAp

Ho anche seguito questo github wiki esattamente e ancora this.BindFilter non è stato trovato. Ho gli ultimi pacchetti di nuget; Ninject (3.0.1.10), Ninject.Web.Common (3.0.0.7), Ninject.MVC3 (3.0.0.6)

Dove si trova BindFilter o BindHttpFilter? Qualcosa è cambiato? Come legare gli attributi del filtro in asp.net web api? Ci sono così tante librerie e progetti e i documenti non ti dicono quale è il lavoro corrente e cosa è deprecato ....

risposta

4

I pacchetti che stai utilizzando sono corretti perché non includono ancora BindHttpFilter. Il metodo di estensione BindHttpFilter è da https://github.com/remogloor/Ninject.Web.WebApi che al momento non funziona per la versione di WebApi come è stato scritto contro la versione beta WebApi. Per iniettare in un filtro WebApi è necessario BindHttpFilter, non è possibile passare un filtro WebApi nel metodo BindFilter.

Questo è https://github.com/ninject/Ninject.Web.WebApi/pull/1 sembra essere l'ultima informazione che ho trovato sullo stato di un aggiornamento.

Si potrebbe anche provare un altro pacchetto NuGet http://nuget.org/packages/Ninject.Web.WebApi-rc ma ho avuto alcuni errori con esso, non ricordo ora esattamente quali errori. Comunque dopo aver letto la discussione sulla richiesta di pull sopra menzionata ho rinunciato a questo pacchetto.

Nel mio caso sto cercando di implementare un filtro di registrazione, quindi creerò un metodo statico che posso chiamare dal filtro fino a quando sarà disponibile il supporto per l'iniezione.

4

Ho lo stesso problema. 1) installo ultima (ma instabile) Ninject per Web.Api dalla console utilizzando il comando PM

PM> Install-Package Ninject.Web.WebApi -Pre 

2) poi aggiungo che questo tratto di NinjectWebCommon.cs

using Ninject.Web.WebApi.FilterBindingSyntax; 

Dopo "usando" questi passaggi il mio IKernel ha il metodo BindHttpFilter. E tutto funziona bene

+0

Questo ha funzionato per me, ma credo che intendessi NinjectWebCommon.cs – friggle

+0

@friggle si, ovviamente! –

Problemi correlati