Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 长时间运行WCF 504网关\u超时错误_C#_Wcf_Quartz Scheduler_Webhttpbinding_Http Status Code 504 - Fatal编程技术网

C# 长时间运行WCF 504网关\u超时错误

C# 长时间运行WCF 504网关\u超时错误,c#,wcf,quartz-scheduler,webhttpbinding,http-status-code-504,C#,Wcf,Quartz Scheduler,Webhttpbinding,Http Status Code 504,我正在webHttpBinding上开发一个WCF web服务,客户端应用程序按需调用此WCF web服务(HTTP POST)或通过调度程序windows服务(当前使用Quartz.net) 每次呼叫都将运行一系列任务,这些任务可能需要10-30分钟。我在1分钟后收到504网关超时错误。我已经尝试增加WCF webservice中的限制,但仍然出现错误 <webHttpBinding> <binding name="webHttpBindingWithJsonP"

我正在webHttpBinding上开发一个WCF web服务,客户端应用程序按需调用此WCF web服务(HTTP POST)或通过调度程序windows服务(当前使用Quartz.net)

每次呼叫都将运行一系列任务,这些任务可能需要10-30分钟。我在1分钟后收到504网关超时错误。我已经尝试增加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服务,还是应该设计为其他类型?

您是否考虑过在初始呼叫中提供状态页,然后让用户(反复)检查状态页以验证任务是否完成


这将确保连接不会超时,因为连接将是短暂的。

为什么不将其设置为来自客户端的单向调用,然后让客户端定期查询服务以获取状态。@Tim,是的,在客户端应用程序中,我使用Task.Run()实现fire&forget API调用,就在我在Chrome的Postman中测试WCF时,它给出了一个504错误。我希望确保返回504后WCF中的进程仍在运行。在客户端应用程序中,我使用Task.Run()实现fire&forget API调用,将作业状态记录为正在运行,并让ajax每隔x秒检查一次完成情况,就在我在Chrome的Postman中测试WCF时,它给出了一个504错误。我想确保在504返回到客户端之后,WCF中的进程仍在运行。您需要公开一种方法来检查不同的端点是否完成。保持WCF连接处于打开状态将导致此类错误。如果您正在以某种方式进行通信,它可以正常工作,但只需等待几十分钟将很困难,因为在没有数据传输的情况下打开连接需要很长时间。这正是我正在做的,因为我有不同的wcf检查状态,我担心的是第一个任务实现wcf无法保持连接太长时间,如何确保它始终运行并完成?我不介意打单向电话,忘记结果,稍后让wcf检查状态。