如何回收自托管WCF服务

Did*_*xis 3 .net c# wcf azure azure-worker-roles

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

我希望能够定期"回收"WCF服务主机.问题是,我假设服务正在运行它自己的应用程序域,而且我也没有办法查询它的任何事件,我也可以共享辅助角色和WCF服务之间的通用数据.

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

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

        host.Open

        while(true)
        {
            Sleep(1000);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想每24小时以某种方式"重新启动"主机,但我不知道如何实现这一目标.

kwi*_*ill 5

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