我有一个WCF服务方法,执行时间超过两个小时(运行一些报告).我怎样才能确保它不会超时而不管它花费的时间?我认为WCF配置中有很多超时设置,我不确定哪一个与我相关.对于ASMX webservices,有一个指定无限超时设置的选项,是否有类似的WCF?我是否还需要为此改变任何IIS设置(WCF服务在IIS中托管),如工作进程的回收,空闲超时等?
这是滥用Web服务.不要这样做.
相反,让Web服务启动长时间运行的操作,在单独的进程中运行.如果客户需要知道报告何时完成,那么让"单独的流程"跟踪报告的创建,并在报告完成时记下.客户端可以调用Web服务来检查该状态.
您真的不希望依赖于持续打开数小时的HTTP连接.这是一个网络.事情发生在网络上.坏事.
你考虑过使用回调吗?您的客户端发送请求,然后等待来自服务器的通知何时完成?这可能需要在客户端进行更改,但通过这种方式,您的服务可以"敲响链条"并告知客户端报告何时完成.
帮助:http://idunno.org/archive/2008/05/29/wcf-callbacks-a-beginners-guide.aspx
WCF超时:http: //social.msdn.microsoft.com/Forums/en-US/wcf/thread/84551e45-19a2-4d0d-bcc0-516a4041943d/
您还应该考虑客户端的超时.(binding.OpenTimeout,ReceiveTimeout,CloseTimeout等)
另一个选择是在Windows服务中托管WCF,这可以简化您的情况,因为它从等式中删除IIS:
http://msdn.microsoft.com/en-us/library/ms733069.aspx
或者,使用单向WCF调用怎么样?这样,呼叫将在发送请求后立即返回到客户端.
| 归档时间: |
|
| 查看次数: |
11092 次 |
| 最近记录: |