У меня проблема со службой WCF, которая размещена на виртуальной машине Windows 2016 в Azure, работающей в IIS 10.
Служба - это, по сути, тестовая служба, в которую я добавляю операцию Control - Thread.Sleep (timer), а длительность отправляется в качестве параметра, определенного в operationContract.
Проблема в том, что задание продолжительности ожидания до 4,2 секунд выполняется без проблем, но если я вызываю службу, указав 5 секунд для запуска. Процесс задачи заканчивается через 5 секунд, с кодом выше, внутренний регистратор уведомляет меня, что я закончил, но по какой-то причине WCFTestClient все еще ожидает ответа и продолжает ждать, пока не будет достигнуто настроенное время ожидания. В этом случае у меня есть Receive_timeout и Send 10 минут с обеих сторон в конфигурации службы и в конфигурации клиента.
В качестве доказательства я создал локальную среду в своей сети, смонтировал службу на сервере, и здесьчерез 5 минут или даже 9 минут тестовый тестовый клиент ведет себя как ожидалось.
[OperationContract]
public void TestServiceTimeout (int timer)
{
try
{
log.Info("Start test Service");
System.Threading.Thread.Sleep(timer);
log.Info("End test srervices");
}
catch (Exception ex)
{
log.Error($"An error ocurred. Details: {ex.Message}");
throw;
}
}
Web.Config IIS
<binding name="Control.ws.sTest.customBinding0" receiveTimeout="00:20:00"
sendTimeout="00:20:00">
<binaryMessageEncoding />
<httpTransport />
</binding>
WCFTestClient Config
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_sFacturacion" sendTimeout="00:10:00" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:60000/ws/sFacturacion.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_sFacturacion"
contract="sFacturacion" name="BasicHttpBinding_sFacturacion" />
</client>