【发布时间】:2013-05-26 09:08:16
【问题描述】:
我有一个 IIS 应用程序,它在 Global.asax 中托管 TCP WCF 服务。我使用该服务在 Windows Azure 中的角色之间进行交互通信。问题是 WCF 服务在应用程序池回收(29 小时)后停止工作。之后,我的 interrole 请求开始失败。
如何控制回收事件以保持我的 webroles 活着。最好的解决方案是什么? 我尝试了自动启动功能,但它不起作用。
【问题讨论】:
-
您如何在 Global.asax 中托管您的服务?你能提供一些代码吗?你有状态服务吗?否则我看不出进程回收有任何问题。通常你有一个 .svc 文件,它引用你的服务实现。
-
我正在从 Application_Start 事件初始化它。是的,我的应用程序是有状态的 WCF REST 服务,并且在 global.asax 中我正在一起初始化 REST 服务和 TCP 服务。我没有 .svc 文件,只是使用带有合同的类并将它们托管在 IIS 中。
-
问题不在于服务状态。当另一个角色尝试访问回收的角色时,它无法访问并引发通信异常。我只想在回收事件后初始化我的应用程序,但直到有人向应用程序发出外部请求时它才会初始化。
-
这就是 Web 应用程序的理念。在 IIS8 中,您可以配置应用程序始终启动,但我不了解 Azure。我认为您应该为此类服务使用工作者角色,而不是网络规则
标签: wcf iis azure azure-web-roles recycle