我正在webHttpBinding上开发WCF Web服务,客户端应用程序按需调用此WCF Web服务(HTTP POST)或通过调度程序窗口服务(当前使用Quartz.net)。
每个调用都会运行一个可能需要10-30分钟的任务列表。 1分钟后我收到504 Gateway_Timeout错误。我已经尝试在WCF webservice中增加限制但仍然出错。
<webHttpBinding>
<binding name="webHttpBindingWithJsonP" closeTimeout="00:30:00" openTimeout="00:30:00" receiveTimeout="00:30:00" sendTimeout="00:30:00" maxReceivedMessageSize="50000000" maxBufferSize="50000000" maxBufferPoolSize="50000000" crossDomainScriptAccessEnabled="true"/>
</webHttpBinding>
<httpRuntime executionTimeout="1800" targetFramework="4.0"/>
无论错误如何,任务都将始终完成。当Web请求超时时,我不确定WCF是否仍在运行?如果任务需要的时间较少,例如半分钟,则返回有效结果。
我已尝试使用所有switchvalue跟踪日志,并使用traceviewer监视输出,未发现任何错误。
我的问题是WCF服务应该设计为webHttpBinding服务,还是应该将其设计为不同的类型?
答案 0 :(得分:1)
您是否考虑过提供状态页作为初始调用的一部分,然后让用户(重复)检查状态页以验证任务是否完成?
这将确保没有任何超时,因为连接将是短暂的。