我在Azure Woker Role中托管WCF服务,就像this一样。
我希望能够定期“回收”WCF服务主机。问题是,我假设该服务正在运行它自己的App域,我无法对任何事件进行轮询,也无法在Worker Role和WCF服务之间共享任何公共数据。
供参考,这是托管的最小代码:
public override void Run()
{
using(var host = new ServiceHost(typeof(MyService))
{
// Configure host here...
host.Open
while(true)
{
Sleep(1000);
}
}
}
我想每24小时以某种方式“重新启动”主机,但我不知道如何实现这一目标/将要做什么。
答案 0 :(得分:5)
WCF服务正在运行in-proc到您的工作者角色权限(即一切都在WaWorkerHost.exe中运行)?在这种情况下,您可以调用RoleEnvironment.RequestRecycle,也可以让Run()方法退出。无论哪种方式都会导致WaWorkerHost.exe正常关闭,然后Azure来宾代理将自动重启所有内容。