我正在将WCF工具用于WAS中托管的服务(iis7中的net.tcp绑定),并且仅在冷应用程序启动时(即尚未运行)遇到奇怪的问题。
首次实例化我的容器时,应执行以下语句。
DefaultServiceHostFactory.RegisterContainer(c.Kernel);
请求服务时,我的WCF跟踪文件
中出现以下异常内核为空,你忘了调用DefaultServiceHostFactory.RegisterContainer()
问题似乎是ServiceHostFactory在创建容器之前尝试创建服务主机的实例。
注意:
重新创建问题的步骤
WCF追踪吐出:
System.ServiceModel.ServiceActivationException:由于编译期间发生异常,无法激活服务'/abcd.svc'。异常消息是:调用目标抛出异常.. ---> System.Reflection.TargetInvocationException:调用目标抛出了异常。 ---> System.ArgumentNullException:内核为null,你忘了调用DefaultServiceHostFactory.RegisterContainer()吗? 参数名称:内核 在Castle.Facilities.WcfIntegration.WindsorServiceHostFactory`1..ctor(IKernel kernel) 在Castle.Facilities.WcfIntegration.DefaultServiceHostFactory..ctor()
答案 0 :(得分:1)
问题是global.asax及其所有方法仅与HTTP处理有关。顺便说一句。 global.asax中的类派生自HttpApplication
,这应该非常清楚。一旦在WAS中托管应用程序(这是基于net.tcp的绑定的情况),您就无法使用这些方法。尝试使用类似AppInitialize的内容。