WCF Azure 长时间运行操作

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

2
这是由于负载均衡器。超时时间以前是60秒,但几个月前已经增加到“超过60秒”(取决于并发连接)。无论如何,您需要保持连接活动以避免超时。
我建议您在WCF客户端/服务中尝试实现此操作:WCF Azure Net.TCP Keep Alive 为什么不重新思考一下您的架构呢?而不是依赖连接(可能因为任何原因而断开连接),为什么不让您的客户端将消息放入队列中?您的工作角色从队列中获取消息,进行2-3小时的处理,一旦完成,它就会在另一个队列中放置一个消息。最后,您的客户端轮询该另一个队列,一旦有消息到达,它就知道该进程已完成。

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接