2012-02-07 3 views
0

WCF 명명 된 파이프에서받은 데이터를 표시하는 UI WPF 응용 프로그램이 있습니다. 잠시 후 (~ 30 분) 데이터가 고정됩니다 (그러나 다시 시작한 후 모두 정상입니다). 오류가 표시되지 않습니다. UI가 책임이 있습니다. 문제를 해결하는 방법? 아마도 "try/catch"로 전체 응용 프로그램을 처리하고 messagebox에 예외를 표시해야합니까?문제 해결 방법 : wcf 응용 프로그램이 명명 된 파이프를 통해 데이터 수신을 중지합니까?

+0

서버가 요청에 응답합니까? –

+0

클라이언트를 다시 시작한 후 모두 정상적으로 작동하므로 서버가 살아 있음 – javapowered

+0

wireshark를 사용해 보셨습니까? http://www.wireshark.org/ –

답변

0

기본적으로 wcf는 수명이 짧은 세션에 대해 구성됩니다. 이 동작이 사라지려면 NetNamedPipeBinding의 ReceiveTimeout을 TimeSpan.MaxValue로 설정해야합니다.
이것은 문제를 해결해야합니다. 어쨌든 채널의 오류, 종료, 이벤트에 처리기를 추가하여 발생 상황을 파악하는 것이 좋습니다. (채널을 ICommunicationObject에 캐스트해야합니다). wcf에서 문제가 발생하면 유일한 해결책은 새 채널을 만드는 것입니다 (오류가 있거나 닫힌 상태에서 열기로 되돌릴 수 없음).

+0

이 설정은 "비활성"세션에만 속하기 때문에'set NetNamedPipeBinding to TimeSpan.MaxValue'는 문제를 해결할 수 없다고 생각합니다. 제 경우에는 세션이 꽤 활발합니다. – javapowered

+0

'채널의 Faulted, Closed, ... events '에 처리기를 추가하는 방법은 무엇입니까? – javapowered

+0

TimeSpan - 어쨌든 시도해보십시오 .--) 처리기에서 언어는 VB이지만 캐스트()와 함께 채널에 연결된 ICommunicationObject를 사용하면 MyICommunicationObject.Faulted + = new가 사용됩니다. System.EventHandler (this.MyFaultedHandler) 여기서 MyFaultedHandler는 올바른 서명이있는 함수입니다 (Object sender, System.EventArgs e). – GameAlchemist

관련 문제