У меня есть простая служба 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 и обнаружил, что он застревает под «Действие процесса» , как только оно достигает -
«Opened System.ServiceModel.InstanceContext / 22021704"
Странно то, что эта служба не работает только на конкретной машине .Машина, на которой работает служба WCF, не застревает при открытии "InstanceContext".
Как вы можетесм. на втором изображении сообщение фактически попадает в Сервис и не застревает.
Единственное различие между двумя компьютерами заключается в том, что один из них - Windows Server 2016, а другой - Windows Server 2008 R2.Сервисы используют .NET 4.5.При необходимости я могу предоставить другие сведения.
Не уверен, что это важно, но эта служба WCF размещена внутри службы Windows.Он инициализируется с использованием класса ServiceHost.По сути, используя метод, описанный Microsoft здесь -
Как: разместить службу WCF в управляемой службе Windows
Вот конфигурация службы -
<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>
Я не знаю, как отладить это дальше.