WCF服务在打开InstanceContext时在内部卡住

时间:2018-10-26 18:06:35

标签: c# web-services wcf wcf-binding

我有一个简单的WCF服务,其中包含一个已定义的操作-

[ServiceContract]
    public interface IFacadeService
    {
        [OperationContract]
        void ReceiveXML(XElement xmlPayload);
    }
    public class FacadeService : IFacadeService
    {        
        public void ReceiveXML(XElement xmlPayload)
        {
         //Implementation
        }
    }

问题在于,当通过诸如SOAP UI之类的客户端调用操作时,服务不会响应。 SOAP UI只是超时,因为它没有收到任何返回。

该呼叫永远不会到达服务。它停止在某些内部WCF层。我启用了WCF日志记录功能,发现它到达后立即卡在“流程操作” 下-

“已打开System.ServiceModel.InstanceContext / 22021704”

enter image description here

奇怪的是,该服务仅在特定计算机上不起作用。打开“ InstanceContext”时,运行WCF服务的计算机不会卡死。

enter image description here

如您在第二张图中看到的,消息实际上到达了服务并且没有被卡住。

两台计算机之间的唯一区别是,一台是Windows Server 2016,另一台是Windows Server 2008 R2。这些服务正在使用.NET 4.5。我可以根据需要提供其他详细信息。

不确定它是否重要,但是此WCF服务托管在Windows Service中。它使用ServiceHost类初始化。基本上使用Microsoft在此描述的技术-

How to: Host a WCF Service in a Managed Windows Service

这是服务的配置-

 <serviceBehaviors>
    <behavior name="AutoImportFacadeSvcBehavior">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="webBehavior">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>

<services>
  <service behaviorConfiguration="AutoImportFacadeSvcBehavior" name="MediaPulse.WorkFlowLibrary.AutoImportFacadeService.FacadeService">
    <endpoint address="" binding="webHttpBinding" behaviorConfiguration="webBehavior" contract="MediaPulse.WorkFlowLibrary.AutoImportFacadeService.IFacadeService"/>
    <host>
      <baseAddresses>
        <add baseAddress="http://MSMMLDXYTECH:8122/FacadeService"/>
      </baseAddresses>
    </host>
  </service>
</services>  

我不知道如何进一步调试它。

0 个答案:

没有答案