2012-10-06 10 views
6

Obecnie używam ninject.mvc3 w moim projekcie webapi asp.net i działa dobrze. Próbuję teraz powiązać atrybuty filtru, ale BindFilter i BindHttpFilter brakuje w interfejsie IKernel podczas korzystania z metody klasy statycznej NinjectWebCommon. Jeśli dodam pakiet Ninject.Web.WebApi, to tam, ale projekt nie zostanie uruchomiony (problem here, rozwiązanie mówi, że Ninject.Web.WebApi jest przestarzałe), więc usunąłem go z powrotem.Użycie Ninject do wiązania atrybutów filtrów WebApi

Podążałem dokładnie za tym github wiki dokładnie i nadal nie znaleziono this.BindFilter. Mam najnowsze pakiety nuget; Ninject (3.0.1.10), Ninject.Web.Common (3.0.0.7), Ninject.MVC3 (3.0.0.6)

Gdzie jest BindFilter lub BindHttpFilter? Czy coś się zmieniło? Jak powiązać atrybuty filtra w asp.net web api? Jest tak wiele bibliotek i projektów, a dokumenty nie mówią, co jest aktualnie działającym i co jest przestarzałe ...

Odpowiedz

4

Pakiety, których używasz są poprawne, ponieważ nie zawierają jeszcze BindHttpFilter. Metoda rozszerzenia BindHttpFilter pochodzi z https://github.com/remogloor/Ninject.Web.WebApi, która obecnie nie działa w wersji Release WebApi, ponieważ została napisana w wersji beta WebApi. W celu wprowadzenia do filtra WebApi potrzebujesz BindHttpFilter, nie możesz przekazać filtru WebApi do metody BindFilter.

To jest https://github.com/ninject/Ninject.Web.WebApi/pull/1 wydaje się być najnowszą informacją na temat stanu aktualizacji.

Możesz także wypróbować inny pakiet NuGet http://nuget.org/packages/Ninject.Web.WebApi-rc, ale miałem z tym kilka błędów, nie pamiętam dokładnie, jakie błędy. W każdym razie po przeczytaniu dyskusji na temat wyżej wymienionego wniosku o zwolnienie zrezygnowałem z tego pakietu.

W moim przypadku staram się wprowadzić filtr rejestrowania więc jestem po prostu zamiar stworzyć metodę statyczną, że mogę zadzwonić z filtra aż do wsparcia wtryskowego będzie dostępna.

4

Mam ten sam problem. 1) zainstalować najnowszy (ale niestabilna) Ninject dla Web.Api z konsoli za pomocą polecenia PM

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

2) Potem dodać do tego "za pomocą" odcinek NinjectWebCommon.cs

using Ninject.Web.WebApi.FilterBindingSyntax; 

Po te kroki mój IKernel ma metodę BindHttpFilter. I wszystko działa dobrze

+0

To działało dla mnie, ale wierzę, że miałeś na myśli NinjectWebCommon.cs – friggle

+0

@friggle tak, oczywiście! –

Powiązane problemy