gpt4 book ai didi

c# - 如何获取 WCF 客户端故障事件的原因?

转载 作者:太空宇宙 更新时间:2023-11-03 16:56:20 25 4
gpt4 key购买 nike

如何获取导致 WCF 客户端故障事件的异常或错误代码?

private void ConnectionFaultedHandler(object sender, EventArgs e) 
{
// Darn! Something went wrong.
// Better clean up.
this._Connection.Abort();
this._Connection.InnerChannel.Faulted -= this.ConnectionFaultedHandler;

// I'd really like to tell the user some detail of what blew up.
// But there is no Exception (or similar) property on the event.
this.NotifyUIOfConnectionFailure(e.Exception);
}

请注意,这类似于 this thread ,除了我 1) 无法以这种方式工作,并且 2) 它似乎正在解决服务端的问题,我想在客户端处理。

编辑:

澄清一下,上面的处理程序是长时间(数小时甚至数天)保持打开状态的连接的一部分;它有一个回调接口(interface)来接收来自服务的数据。当您调用 Open 之类的方法或作为合约接口(interface)的一部分的方法时,我不是在询问异常,而是因为(例如)有人从您的 PC 上拔下网络电缆,或者您的 Internet 连接刚刚失败而发生的故障。

假设它发生在这段代码执行后的某个时间:

private void OpenConnection()
{
try
{
this._Connection.Open();
}
catch (Exception ex)
{
// Yes, I should be catching CommunicationsException,
// and TimeoutException, but space is short on StackOverflow.
return;
}

Debug.Assert(this._Connection.State == Open);

this._Connection.InnerChannel.Faulted += this.ConnectionFaultedHandler;
}

最佳答案

顺便问一下,你的问题不是很清楚

接收Fault不同于接收异常。

每当你抛出一个异常对象时,客户端就会接收到相应的 catch block 。

如果信道有问题(未连接)则收到故障...

关于c# - 如何获取 WCF 客户端故障事件的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1817620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com