如何回收自托管WCF服务

时间:2013-08-28 13:52:39

标签: c# .net wcf azure azure-worker-roles

我在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小时以某种方式“重新启动”主机,但我不知道如何实现这一目标/将要做什么。

1 个答案:

答案 0 :(得分:5)

WCF服务正在运行in-proc到您的工作者角色权限(即一切都在WaWorkerHost.exe中运行)?在这种情况下,您可以调用RoleEnvironment.RequestRecycle,也可以让Run()方法退出。无论哪种方式都会导致WaWorkerHost.exe正常关闭,然后Azure来宾代理将自动重启所有内容。