T通道状态更改事件
本文关键字:事件 状态 通道 | 更新日期: 2023-09-27 17:59:54
希望这是一个简单的WCF初学者问题。。
我有一个WCF通道工厂,返回一个服务代理TChannel
:
// setup connection to server
var endpointAddress = new EndpointAddress(GetAppSetting("Endpoint"));
var tcpBinding = new NetTcpBinding();
channelFactory = new DuplexChannelFactory<IExcelServer>(this, tcpBinding, endpointAddress);
server = channelFactory.CreateChannel();
我想知道这个服务代理何时更改状态(Faulted、Closed等)。我可以在ChannelFactory
本身上看到事件,但我不确定这是否与通道本身相同,即使在这里停止服务器进程也不会导致状态转换。
这是一个CallbackContract服务,在几乎所有的交互中,服务器都在向客户端发送数据。因此,当我从客户端进行服务器调用时,我不能简单地依靠捕捉故障。
我应该从客户端向服务器发送检测信号以触发状态更改吗?
从CreateChannel
返回的实例实现了TChannel
,但也实现了具有状态更改事件的IClientChannel
,如Closed
、Closing
、Opened
等:
server = channelFactory.CreateChannel();
((IClientChannel)server).Faulted += FaultedHandler;
p.S:正如你所指出的,渠道和渠道工厂的状态是相关的,但并不相同。如果Channel
出现故障,并不一定意味着ChannelFactory
出现故障。