【问题标题】:Ninject WCF Extension ArgumentNullException using NET.TCP BindingNinject WCF 扩展 ArgumentNullException 使用 NET.TCP 绑定
【发布时间】:2011-07-24 00:31:06
【问题描述】:

我有一个配置为使用 wsHttpBinding 和 netTcpBinding 的 2 个端点的 WCF 4 服务。我使用 WAS 在 IIS 7.5 中托管服务,并使用 Ninject WCF 扩展将 DI 引入我的服务。当我使用 wsHttpBinding 端点调用我的服务时,我的服务工作正常,但在我使用 netTcpBinding 时失败。当我查看我的应用程序事件日志时,我收到下面概述的以下错误。

我已经尝试在 VS2010 中调试该问题,但在这个问题上没有任何进展。如果可能的话,我不想从我的 WCF 服务中删除 Ninject。我知道我可以只使用 wsHttpBinding,但我这是一项内部服务,我希望获得 netTcpBindings 提供的性能提升。

WebHost failed to process a request.
 Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/30180123
 Exception: System.ServiceModel.ServiceActivationException: The service '/ProfileService.svc' cannot be activated due to an exception during compilation.  The exception message is: Cannot be null
Parameter name: root. ---> System.ArgumentNullException: Cannot be null
Parameter name: root
   at Ninject.Infrastructure.Ensure.ArgumentNotNull(Object argument, String name) in c:\Projects\Ninject\ninject\src\Ninject\Infrastructure\Ensure.cs:line 20
   at Ninject.ResolutionExtensions.Get[T](IResolutionRoot root, IParameter[] parameters) in c:\Projects\Ninject\ninject\src\Ninject\Syntax\ResolutionExtensions.cs:line 37
   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)
   --- End of inner exception stack trace ---
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath)
 Process Name: w3wp
 Process ID: 8656

有没有人可以帮助解决这个问题?对此的任何帮助将不胜感激。

【问题讨论】:

    标签: .net wcf ioc-container ninject ninject-extensions


    【解决方案1】:

    如果我是正确的,我认为您使用的可能是使用KernelContainer 的旧版本。您需要在KernelContainer 上设置Kernel。见:

    https://github.com/ninject/ninject.extensions.wcf/blob/52bb83728774701ec42b5f76b096bec934dfe419/src/Ninject.Extensions.Wcf/KernelContainer.cs

    【讨论】:

      【解决方案2】:

      在 google 新闻组中查看相同问题的答案:http://groups.google.com/group/ninject/browse_thread/thread/54108ef9e848b8f0

      【讨论】:

      • 谢谢 Remo,这是我在 Ninject 组的帖子,哈哈。我想我会在这两个帖子中发布,以确保我能很好地覆盖我认为可能是需要回答的专业类型的问题。仍在努力,所以一旦我找到答案就会在这里发布供其他人查看。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      相关资源
      最近更新 更多