Соединение канала WCF прервано с ошибкой: Произошла ошибка чтения из канала: Нераспознанная ошибка 109 - PullRequest
1 голос
/ 30 марта 2012

Я разрабатываю службу 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)

и еще одна ошибка 109 с трассировкой стека

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

Я подозревал, что это как-то связано с возвращаемым значением операции на основе потока операций трассировки. Но даже если я объявлю возвращаемый тип операции как void, я все равно получу эту ошибку. Другое дело, хотя я использую обратный вызов, но он не вызывает обратный вызов внутри операции.

Буду признателен за любую помощь, или если вы поможете мне отладить прерванное соединение, я уверен, что есть какой-то способ получить более подробную информацию. Например, как перехватить исключение, упомянутое выше (блок try try внутри операции сервера ничего не получает, как и вызывающая функция на стороне клиента).

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

Оказалось, я не вызывал функцию client.Close () на каком-то этапе. Поэтому при выходе из клиентской программы канал был прерван, и сервер показал упомянутую ошибку

0 голосов
/ 30 марта 2012

Негабаритные сообщения могут вызвать эту ошибку.Вы отправляете много данных от клиента?

Я думаю, что у меня также было это, когда я отправлял перечисление, но значение не было допустимым значением перечисления.

Также некоторыеочень полезная информация здесь о поиске проблемы.

...