我在 Azure Worker 角色中托管 WCF 服务,类似于 this .
我希望能够定期“回收”WCF 服务主机。问题是,我假设该服务正在运行它自己的应用程序域,并且我无法轮询它以查找任何事件,也无法在辅助角色和 WCF 服务之间共享任何公共(public)数据。
作为引用,以下是托管的最低代码:
public override void Run()
{
using(var host = new ServiceHost(typeof(MyService))
{
// Configure host here...
host.Open
while(true)
{
Sleep(1000);
}
}
}
我想每 24 小时以某种方式“重新启动”主机,但我不确定如何/连接什么来实现这一点。
最佳答案
WCF 服务是否在您的辅助角色进程内运行(即所有内容都在 WaWorkerHost.exe 中运行)?在这种情况下,您可以调用 RoleEnvironment.RequestRecycle,或者只是让 Run() 方法退出。无论哪种方式都会导致 WaWorkerHost.exe 正常关闭,然后 Azure guest 代理将自动重新启动所有内容。
关于c# - 如何回收自托管 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18489917/