【发布时间】:2009-01-10 23:34:31
【问题描述】:
即使出现故障状态,我如何让我的 WCF 服务客户端与 WinForm 保持连接?
谢谢。
【问题讨论】:
即使出现故障状态,我如何让我的 WCF 服务客户端与 WinForm 保持连接?
谢谢。
【问题讨论】:
回答我自己:)
您可以订阅 InnerChannel 事件
svc.InnerChannel.Closed += InnerChannel_Error;
svc.InnerChannel.Closing += InnerChannel_Error;
svc.InnerChannel.Faulted += InnerChannel_Error;
然后处理异常并重新创建服务代理
private void InnerChannel_Error(object sender, EventArgs e)
{
var svc = _entrepotService as EntrepotServiceProxy;
try
{
if (svc != null)
{
if (svc.State != CommunicationState.Faulted)
{
svc.Close();
}
else
{
svc.Abort();
}
}
}
catch (CommunicationException)
{
if (svc != null) svc.Abort();
}
catch (TimeoutException)
{
if (svc != null) svc.Abort();
}
catch
{
if (svc != null) svc.Abort();
throw;
}
_entrepotService = new EntrepotServiceProxy();
}
【讨论】:
据我所知,故障状态通常是 WCF 代理的终端。所以不,我不这么认为。
【讨论】: