使用Web API和WCF进行Ninject

时间:2014-08-31 17:27:13

标签: c# .net wcf ninject asp.net-web-api

我正在尝试创建一个自托管多个端点的应用程序,有些会使用 WebApi 和其他一些 Wcf

依赖关系使用 Ninject 进行注册。我使用以下Nuget包: Ninject.Extensions.Wcf.SelfHost (对于WCF)和 Ninject.Web.WebAPi.SelfHost (对于WebAPI)。< / p>

如果我使用WCF OR WebAPI,一切正常。但是一旦我尝试使用WCF AND WebAPI来托管我的端点,我就会遇到激活异常:

控制台应用程序中发生异常。有关详细信息,请参阅stacktrace。| Ninject.ActivationException:使用HttpSelfHostConfiguration的隐式自绑定激活HttpSelfHostConfiguration时出错 几个构造函数具有相同的优先级。请使用ToConstructor语法指定构造函数或添加Inject属性。 构造函数: HttpSelfHostConfiguration(string baseAddress) HttpSelfHostConfiguration(Uri baseAddress) 激活路径:   1)请求HttpSelfHostConfiguration 建议:   1)确保实现类型具有公共构造函数。   2)如果您已实现Singleton模式,请使用与InSingletonScope()的绑定。

我理解问题是什么(两个nugets包是注册插件,其中一个有一个无法注入的构造函数),但我不知道如何解决这个问题。

作为信息,通过运行以下方法在Boostrapper类中抛出异常: kernelInstance.Components.GetAll<INinjectHttpApplicationPlugin>()

我当前的代码( WCF 注册):

   NinjectWcfConfiguration config = NinjectWcfConfiguration.Create<EmployeeService, NinjectServiceSelfHostFactory>(ConfigureService, this.GetBaseAddresses().ToArray());
   NinjectSelfHostBootstrapper selfHost = new NinjectSelfHostBootstrapper(() => this.Kernel, config);
   selfHost.Start();

WebAPI 注册:

    HttpSelfHostConfiguration config = new HttpSelfHostConfiguration(new Uri(BASE_ADDRESS));
    config.Routes.MapHttpRoute("default", "api/{controller}/{id}", new { id = RouteParameter.Optional });
    config.DependencyResolver = new NinjectSelfHostDependencyResolver(this.Kernel);
    new NinjectWebApiSelfHost(config).Start();

任何帮助都非常感谢!

0 个答案:

没有答案