2012-09-13 91 views
3

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

回答

2

这是因为the load balancer。过去的超时时间为60秒,但几个月前这个时间增加到“超过60秒”(取决于并发连接)。无论如何,你需要保持连接活着,以避免超时。

我建议你试试在你的WCF客户端/服务实现这一点:WCF Azure Net.TCP Keep Alive

为什么不重新考虑你的架构?而不是依赖于连接(无论什么原因可以断开连接),为什么不简单地让客户端在队列中放置消息?您的工作角色从队列中选取消息,进行2-3小时的处理,一旦完成,它会将消息放入另一个队列中。最后,客户端轮询其他队列,一旦有消息到达,它就知道该过程已完成。

0

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

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