Исключить исключение ArgumentNullException расширения WCF с помощью привязки NET.TCP - PullRequest
6 голосов
/ 27 марта 2011

У меня есть служба WCF 4 с 2 конечными точками, настроенными на использование wsHttpBinding и netTcpBinding.Я размещаю службу в IIS 7.5 с использованием WAS и использую расширение Ninject WCF для DI в своем сервисе.Мой сервис работает нормально, когда я использую конечную точку wsHttpBinding для вызова своего сервиса, но происходит сбой при использовании netTcpBinding.Когда я просматриваю журнал событий приложений, я вижу следующую ошибку, описанную ниже.

Я пытался отладить проблему в VS2010, но быстро с этим не справился.Я не хочу удалять Ninject из моей службы WCF, если это вообще возможно.Я понимаю, что мог бы просто использовать 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

Есть ли кто-нибудь, кто может помочь с этой проблемой?Любая помощь по этому вопросу будет принята с благодарностью.

Ответы [ 2 ]

7 голосов
/ 28 марта 2011

Если я прав, я считаю, что вы можете использовать более старую версию, которая использует KernelContainer.Вам необходимо установить Kernel на KernelContainer.См .:

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

4 голосов
/ 28 марта 2011

См. Ответы на идентичный вопрос в группе новостей Google: http://groups.google.com/group/ninject/browse_thread/thread/54108ef9e848b8f0

...