2012-03-30 1 views
1

명명 된 파이프 바인딩을 사용하여 콜백을 사용하여 WCF 서비스를 설계하고 있습니다. 그리고 클라이언트에서 서비스를 호출하면 서버 측 추적에서 "파이프에서 읽는 중 오류가 발생했습니다 : 인식 할 수없는 오류가 발생했습니다."라는 오류가 표시되고 결국 파이프 연결이 중단됩니다. 그러나 나는 그 문제를 일으킨 단서가 전혀 없습니다.WCF 파이프 연결이 오류와 함께 중단되었습니다. 파이프에서 읽는 동안 오류가 발생했습니다. 알 수없는 오류 109

System.ServiceModel.Channels.PipeConnection.OnAsyncReadComplete(Boolean haveResult, Int32 error, Int32 numBytes) 
System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32 error, UInt32 bytesRead, NativeOverlapped* nativeOverlapped) 
System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) 

나는 그것을 기반으로 작업의 반환 값을 함께 할 수있는 뭔가가 의심

System.ServiceModel.Channels.PipeConnection.OnAsyncReadComplete(Boolean haveResult, Int32 error, Int32 numBytes) 

스택 트레이스와 또 다른 109 오류 : 추적은 스택 추적을 제외하고 더 많은 정보를 제공하지 않습니다 추적 활동이 흐릅니다. 그러나 반환 형식을 void로 선언하더라도이 오류가 계속 발생합니다. 또 다른 것은 콜백을 사용하고 있지만 콜백 함수를 호출하지 않습니다.

어떤 도움을 주시면 감사하겠습니다. 파이프 연결을 디버그하는 방법을 안내해 드리겠습니다. 자세한 정보를 얻는 방법이 있습니다. 예를 들어 위에서 언급 한 예외를 잡는 방법 (서버 작업 내에서 catch 블록을 사용하면 아무 것도 얻지 못하고 클라이언트 측 함수를 호출하지 않습니다).

답변

1

나는 어떤 단계에서 client.Close() 함수를 호출하지 않았다. 따라서 클라이언트 프로그램이 종료되면 채널이 중단되고 서버에 언급 된 오류가 표시됩니다.

0

큰 메시지 때문에이 오류가 발생할 수 있습니다. 클라이언트로부터 많은 양의 데이터를 보내고 있습니까?

열거 형을 보낼 때도 사용했을 것으로 생각되지만 값은 유효한 열거 형 값이 아닙니다.

또한 매우 유용한 정보 here에 대한 문제 추적.

+0

답장을 보내 주셔서 감사합니다. 또한 과도한 응답이나 열거 형 값으로 인해이 문제가 발생할 수 있음을 알게되었습니다. 처음에는 열거 형을 반환했지만 이제는 bool을 반환하도록 변경했습니다 (함수를 void로 변경했지만 여전히이 문제가 있음). 또 다른 것은 당신의 링크에 있는데, 클라이언트 측에서 109 에러가 발생했다고 말했고, 제 경우에는 직렬화 에러와 같은 유용한 정보없이 서버에서 얻었습니다. 나는 실패한 이유가 어떤 예외에서보고되었다고 믿는다. 그러나 나는 그것을 어디에서 붙잡을 지 모른다. – tete

관련 문제