I am trying to use Ninject in my WebApi project.
let kernel = new StandardKernel()
kernel.Bind<ITestDomain>().To<TestDomain>() |> ignore
let (resolver:Dependencies.IDependencyResolver) = upcast new NinjectDependencyResolver(kernel)
GlobalConfiguration.Configuration.DependencyResolver <- resolver
I end up getting this error:
{
"message":"An error has occurred.",
"exceptionMessage":"Error activating IFilterProvider using binding
from IFilterProvider to DefaultFilterProvider\r\nA cyclical
dependency was detected between the constructors of two
services.\r\n\r\nActivation path:\r\n 3) Injection of dependency
IFilterProvider into parameter defaultFilterProviders of
constructor of type DefaultFilterProviders\r\n 2) Injection of
dependency DefaultFilterProviders into parameter filterProviders
of constructor of type DefaultFilterProvider\r\n 1) Request for
IFilterProvider\r\n\r\nSuggestions:\r\n 1) Ensure that you have
not declared a dependency for IFilterProvider on any
implementations of the service.\r\n 2) Consider combining the
services into a single one to remove the cycle.\r\n 3) Use
property injection instead of constructor injection, and implement
IInitializable\r\n if you need initialization logic to be run
after property values have been injected.\r\n",
"exceptionType":"Ninject.ActivationException","stackTrace":" at Ninject.Activation.Context.Resolve()\r\n at Ninject.KernelBase.<>c__DisplayClass15.b__f(IBinding binding)\r\n at System.Linq.Enumerable.WhereSelectListIterator2.MoveNext()\r\n at System.Linq.Enumerable.<CastIterator>d__94
1.MoveNext()\r\n at System.Linq.Enumerable.d__162.MoveNext()\r\n at System.Collections.Generic.List
1..ctor(IEnumerable1 collection)\r\n at System.Linq.Enumerable.ToList[TSource](IEnumerable
1 source)\r\n at Ninject.Web.WebApi.Filter.DefaultFilterProvider.GetFilters(HttpConfiguration configuration, HttpActionDescriptor actionDescriptor)\r\n at System.Web.Http.Controllers.HttpActionDescriptor.b__0(IFilterProvider fp)\r\n at System.Linq.Enumerable.d__162.MoveNext()\r\n at System.Linq.Buffer
1..ctor(IEnumerable1 source)\r\n at System.Linq.OrderedEnumerable
1.d__1.MoveNext()\r\n at System.Linq.Buffer1..ctor(IEnumerable
1 source)\r\n at System.Linq.Enumerable.d__741.MoveNext()\r\n at System.Web.Http.Controllers.HttpActionDescriptor.<RemoveDuplicates>d__3.MoveNext()\r\n at System.Linq.Buffer
1..ctor(IEnumerable1 source)\r\n at System.Linq.Enumerable.<ReverseIterator>d__74
1.MoveNext()\r\n at System.Collections.Generic.List1..ctor(IEnumerable
1 collection)\r\n at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source)\r\n at System.Web.Http.Controllers.HttpActionDescriptor.InitializeFilterPipeline()\r\n at System.Lazy
1.CreateValue()\r\n at System.Lazy1.LazyInitValue()\r\n at System.Lazy
1.get_Value()\r\n at System.Web.Http.Controllers.HttpActionDescriptor.GetFilterPipeline()\r\n at System.Web.Http.Controllers.HttpActionDescriptor.GetFilterGrouping()\r\n at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()"
}
Any ideas how to fix this?