首页 文章

WCF Azure长时间运行的操作

提问于
浏览
3

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

2 回答

  • 2

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

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

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

  • 0

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

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

相关问题