我正在将 WCF 工具用于 WAS 中托管的服务(iis7 中的 net.tcp 绑定),并且仅在冷应用程序启动(即尚未运行)时遇到一个奇怪的问题。
以下语句应在我的容器第一次实例化时执行。
DefaultServiceHostFactory.RegisterContainer(c.Kernel);
请求服务时,我的 WCF 跟踪文件中出现以下异常
内核为空,您是否忘记调用 DefaultServiceHostFactory.RegisterContainer()
问题似乎是 ServiceHostFactory 在创建我的容器之前尝试创建服务主机的实例。
笔记:
- 此异常发生在Application_Start执行之前
- 如果应用程序正在运行(并且容器已初始化),那么服务将按预期运行。可以通过通过 HTTP 转到适当的 IIS 站点或从 Visual Studio 启动调试会话来启动应用程序。
重新创建问题的步骤
- 发出 IISReset 以关闭所有 IIS 应用程序池。
- 致电有问题的服务
WCF 跟踪吐出:
System.ServiceModel.ServiceActivationException:由于编译期间出现异常,无法激活服务“/abcd.svc”。异常消息是:调用目标已引发异常。 ---> System.Reflection.TargetInvocationException:调用目标已引发异常。---> System.ArgumentNullException: Kernel was null, 你忘了调用 DefaultServiceHostFactory.RegisterContainer() 吗?参数名称:Castle.Facilities.WcfIntegration.WindsorServiceHostFactory 的内核`1..ctor(IKernel kernel) at Castle.Facilities.WcfIntegration.DefaultServiceHostFactory..ctor()