간단한 WCF 초보자 질문 ..TChannel 상태 변경 이벤트? 희망
나는 서비스 프록시 TChannel
를 반환하는 WCF 채널 공장 :
// setup connection to server
var endpointAddress = new EndpointAddress(GetAppSetting("Endpoint"));
var tcpBinding = new NetTcpBinding();
channelFactory = new DuplexChannelFactory<IExcelServer>(this, tcpBinding, endpointAddress);
server = channelFactory.CreateChannel();
나는이 서비스 프록시 상태 (폴트, 청산 등을 변경하는 경우 알고 싶습니다
). ChannelFactory
에서 이벤트를 볼 수 있지만 채널 자체와 동일하지는 않습니다. 서버 프로세스를 중지해도 상태가 전환되지 않습니다.
이것은 CallbackContract 서비스이며 거의 모든 상호 작용에서 서버는 클라이언트에 데이터를 전송합니다. 따라서 클라이언트에서 서버 호출을 할 때 단순히 실패를 포착하는 데 의존 할 수는 없습니다.
상태 변경을 트리거하기 위해 클라이언트에서 서버로 하트 비트를 전송해야합니까?
완벽하게 작동합니다. 나는 여전히 VS에서 의심스러운 캐스트 경고를 받고있다. IClientChannel을 클래스 선언에 추가하는 것은 실용적이지 않다. 내가 아마도 확장해야하는 추상 클래스가 있는가? – MarkNS
@ MarkNuttall-Smith이 경우에는 VS 이상을 알고 있습니다. 인스턴스는 항상 IClientChannel이 될 것이지만 다음을 확인하여 VS를 진정시킬 수 있습니다 :'var clientChannel = server as IClientChannel; if (clientChannel! = null) {clientChannel.Faulted + = FaultedHandler; }' – i3arnon