TChannel状态改变事件?

时间:2014-04-23 15:50:04

标签: c# .net wcf channelfactory

希望一个简单的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服务,在几乎所有交互中,服务器都在向客户端发送数据。因此,当我从客户端拨打服务器电话时,我不能简单地依靠捕获故障。

我应该从客户端向服务器发送心跳以触发状态更改吗?

1 个答案:

答案 0 :(得分:2)

您从CreateChannel获取的实例会TChannel,但IClientChannel会更改状态,例如ClosedClosingOpened等等:

server = channelFactory.CreateChannel();
((IClientChannel)server).Faulted += FaultedHandler;
P.S:正如您所指出的,渠道和渠道工厂的状态是相关的但不相同。如果Channel出现故障,则并不一定意味着ChannelFactory是。