我试图用 WCF 建立一个服务器间通信协议。但是由于某种原因,当服务器断开连接时,会调用 Faulted 和 Closed 事件。这真的很烦人,但我还没有找到解决方案。
private static ServiceHost loginService;
static void Load() {
loginService = new ServiceHost(typeof(LoginService), new Uri[] { new Uri(Settings.Instance.LoginServiceURI) });
loginService.AddServiceEndpoint(typeof(ILoginService), ServiceHelpers.GetBinding(new Uri(Settings.Instance.LoginServiceURI)), Settings.Instance.LoginServiceURI);
loginService.Faulted += new EventHandler(loginService_Faulted);
loginService.Open();
}
static void loginService_Faulted(object sender, EventArgs e)
{
Log.WriteLine(LogLevel.Error, "LoginWCF Faulted. Restarting.");
loginService.Close();
Load();
}
愚蠢的是,只有 ILoginService 接口内部的函数会在连接断开时抛出异常。我认为TCP有它自己的保持活动?