3

我在 Azure Woker 角色中托管 WCF 服务,就像这样

我希望能够定期“回收”WCF 服务主机。问题是,我假设该服务正在运行它自己的应用程序域,并且我无法轮询它是否有任何事件,也无法在 Worker Role 和 WCF 服务之间共享任何公共数据。

作为参考,这是托管的最少代码:

public override void Run()
{
    using(var host = new ServiceHost(typeof(MyService))
    {
        // Configure host here...

        host.Open

        while(true)
        {
            Sleep(1000);
        }
    }
}

我想每 24 小时以某种方式“重新启动”主机,但我不知道如何/什么挂钩来实现这一点。

4

1 回答 1

5

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

于 2013-08-29T20:05:51.140 回答