2014-01-27 2 views
2

두 개의 응용 프로그램을 이중 WCF 연결로 연결했습니다. 연결이 일관성이있는 한 잘 작동합니다.이중 연결 WCF 재 연결 시나리오

연결이 끊어져 다시 연결해야하는 경우 재 연결 시나리오를 처리하는 방법을 지금 확인하고 있습니다. WCF에서이 작업을 수행하는 방법을 이해하는 데 어려움을 겪고 있습니다.

알고있는 한 IChannel은 소모품이지만, ChannelFactory은 비쌉니다. 그래서 하나의 팩토리를 만든 다음 채널을 만듭니다. 채널에서 Closed 또는 Faulted 이벤트를 감지 할 때마다 채널을 닫고 이벤트 핸들러를 분리 한 다음 다른 채널을 생성하십시오.

그러나 때때로 DuplexChannelFactory<T>.CreateChannel뿐만 아니라 오류 발생,이 예외가 발생됩니다 때문에이 방법은 아주 잘 작동하지 않습니다 :

System.ServiceModel.CommunicationObjectAbortedException occurred 
    HResult=-2146233087 
    Message=The communication object, System.ServiceModel.InstanceContext, cannot be used for communication because it has been Aborted. 

어떻게 이런 공장 자체가 이런 식으로 오류가 발생한 가져옵니다 가능성이 있습니까?

WCF에서 연결 해제/재 연결을 처리하는 올바른 방법은 무엇입니까? 이 부분에 대답하려고

답변

0

: "어떻게 공장 자체가 이런 식으로 오류가 발생한 가져옵니다이 가능하다"

응용 프로그램을 호스팅하는 IIS의 경우 응용 프로그램 풀이 재활용되어이 문제가 발생할 수 있습니다. 로그가 근본 원인인지 확인합니다.

+0

이 질문은 불가지론자를 호스팅하고 있습니다. 재 연결에 접근하는 방법을 알고 싶습니다. – vtortola

+0

설명해 주셔서 감사합니다. 나는 파트 1에 답하려고 노력했다. 내가 한 일을 기반으로 재 연결을 다루는 방법에 대한 나의 생각을 적어 보려고 할 것이다. –

1

나는 일을하지만, 올바른 방법입니다 언급하지 않았다 ....

단선/재 연결을 처리하기 위해 내 접근 방식에 "핑 (ping)"메소드를 호출하는 (클라이언트) 타이머를 사용하는 것입니다

기존 연결을 통해 서비스를 만들고 필요한 경우 다시 만드십시오. 더 좋은 방법이 있다면 나는 생각하지 않는다. 나는 보지 않았다.

내 문제는 연결이 끊어져서 클라이언트가 죽은 줄을 듣고 알림을 놓치는 것입니다.