我有一个WCF服务的问题,该服务托管在Azure的Windows 2016 VM上,在IIS 10中运行。
该服务基本上是一个测试服务,我在operatingContract中加入了Thread.Sleep(定时器),持续时间作为一个参数在operatingContract中定义发送。
问题是,指定最多4.2秒的睡眠持续时间运行没有问题,但如果我调用服务时指定5秒运行。任务进程在5秒时结束,用上面的代码,内部日志器通知我已经完成了,但由于某些原因WCFTestClient仍在等待响应,并继续等待,直到达到配置的超时。在这种情况下,我在服务配置和客户端配置中都有我的Receive_timeout和Send 10分钟。
作为证明,我在我的网络中创建了一个本地环境,将服务挂载在服务器上,在这里,经过5分钟甚至9分钟的测试,测试客户端的行为符合预期。
[OperationContract]
public void TestServiceTimeout (int timer)
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>
<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>