WCF Azure长时间运行的操作

时间:2012-09-13 13:15:49

标签: wcf azure

我有一个需要调用的WCF服务,以便调用将触发2-3小时的处理。我正在使用Windows C#客户端应用程序来调用服务并将超时设置为所有最大值。当我将其部署到Windows Azure时,客户端触发的WCF进程似乎在某个时刻后停止。客户端没有获得超时异常。我可以使用Azure辅助角色,但只能使用WCF代码完成该过程,因为它是一项复杂的操作。换句话说,我不能只调度对数据库执行简单编辑/插入操作的工作者角色。所以我有鸡和蛋的问题。后台进程需要WCF代码来执行后台操作,但是在Azure上一段时间后WCF似乎停止了。有什么方法可以在WCF中执行长时间运行的调用,以及如何在Azure上执行需要使用托管云服务WCF代码执行长时间运行操作的长时间运行调用?

2 个答案:

答案 0 :(得分:2)

这是因为the load balancer。超时曾经是60秒,但几个月前,这已经增加到“超过60秒”(取决于并发连接)。无论如何,您需要保持连接处于活动状态以避免超时。

我建议您尝试在WCF客户端/服务中实现此功能:WCF Azure Net.TCP Keep Alive

为什么不重新考虑您的架构?为什么不让客户端在队列中删除消息,而不是依赖于连接(可以因任何原因断开连接)?您的worker角色从队列中获取消息,进行2-3小时处理,一旦完成,它会将消息丢弃到另一个队列中。最后,您的客户端轮询其他队列,一旦消息到达那里,它就知道该过程已完成。

答案 1 :(得分:0)

您可以将长时间运行操作所需的代码放在单独的项目中。然后,您可以在WCF解决方案和工作者角色解决方案中包含此项目。

后台进程将具有完成操作所需的所有功能。