我正在webHttpBinding上开发一个WCF web服务,客户端应用程序按需(HTTPPOST)或通过调度程序窗口服务(当前使用Quartz.net)调用此WCF web服务。
每次通话都会运行一个任务列表,该列表可能需要10-30分钟。1分钟后我收到504 Gateway_Timeout错误。我已经尝试增加WCF Web服务的限制,但仍然收到错误。
<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服务,还是应该设计为不同的类型?
您是否考虑过在初始调用中提供一个状态页面,然后让用户(重复)检查状态页面以验证任务是否完成?
这将确保没有任何超时,因为连接将是短时间的。