与Ninject& WebApi 2 /激活IFilterProvider时出错

时间:2015-11-21 01:20:49

标签: f# ninject asp.net-web-api2

我正在尝试在我的WebApi项目中使用Ninject。

let kernel = new StandardKernel()
kernel.Bind<ITestDomain>().To<TestDomain>() |> ignore

let (resolver:Dependencies.IDependencyResolver) = upcast new NinjectDependencyResolver(kernel)
GlobalConfiguration.Configuration.DependencyResolver <- resolver

我最终收到此错误:

 {
          "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",

&#34; exceptionType&#34;:&#34; Ninject.ActivationException&#34;&#34;堆栈跟踪&#34;:&#34;在Ninject.Activation.Context.Resolve()\ r \ n在Ninject.KernelBase。&lt;&gt; c__DisplayClass15.b__f(IBinding binding)\ r \ n在System.Linq.Enumerable.WhereSelectListIterator 2.MoveNext()\r\n at System.Linq.Enumerable.<CastIterator>d__94 1.MoveNext ()\ r \ n在System.Linq.Enumerable.d__16 2.MoveNext()\r\n at System.Collections.Generic.List 1..ctor(IEnumerable 1 collection)\r\n at System.Linq.Enumerable.ToList[TSource](IEnumerable 1 source)\ r \ n在Ninject.Web.WebApi.Filter.DefaultFilterProvider.GetFilters( System.Linq.Enumerable.d__16 2.MoveNext()\r\n at System.Linq.Buffer 1..ctor(IEnumerable { {1}} 1.d__1.MoveNext()\ r \ n at System.Linq.Buffer 1 source)\r\n at System.Linq.OrderedEnumerable 1 source)\ r \ n at System.Linq.Enumerable.d__74 1..ctor(IEnumerable 1..ctor (IEnumerable 1.MoveNext()\r\n at System.Web.Http.Controllers.HttpActionDescriptor.<RemoveDuplicates>d__3.MoveNext()\r\n at System.Linq.Buffer 1.MoveNext()\ r \ n at System.Collections.Generic.List 1 source)\r\n at System.Linq.Enumerable.<ReverseIterator>d__74 1 collection)\ r \ n at System.Linq.Enumerable.ToList [TSource](IEnumerable { {1}} 1.CreateValue()\ r \ n在System.Lazy 1..ctor(IEnumerable 1.get_Value()\ r \ n在System.Web.Http.Controllers.HttpActionDescriptor.GetFilterPipeline()\ r \ n at System.Web.Http.Controllers.HttpActionDescri ptor.GetFilterGrouping()\ r \ n在System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext,CancellationToken cancellationToken)\ r \ n在System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()&#34;

1 source)\r\n   at System.Web.Http.Controllers.HttpActionDescriptor.InitializeFilterPipeline()\r\n at System.Lazy

0 个答案:

没有答案