Получите необработанные байты из System.ServiceModel.Channels.Message - PullRequest
0 голосов
/ 14 июня 2019

Я делаю кое-что на C # SOAP, и оно работает нормально, пока вдруг один из моих запросов не завершится с XmlException "Байт 0x1B недопустим в этом месте. Строка 231, позиция 10."

Это довольно подробное исключение, проблема в том, что сервер SOAP является сторонним продуктом, и у меня нет доступа ни к чему на стороне сервера; любую отладку, которую я хочу выполнить, я должен выполнить на стороне клиента.

Я добавил свой собственный объект IEndpointBehavior, и в его ApplyClientBehavior () я добавляю свой собственный объект IClientMessageInspector, и вызывается метод AfterReceiveReply (), но как только у меня появляется ссылка на объект Message, этого не происходит. похоже, я могу с этим что-то сделать.

Любой вызов, который я выполняю для объекта Message, дает то же исключение XmlException. Делает GetReaderAtBodyContents (), сопровождаемый ReadOuterXml (), делает это. Вызов CreateBufferedCopy () делает это. Вызов WriteBody () делает это. Большинство предложений, которые я видел в Интернете, начинаются с CreateBufferedCopy (), и, поскольку я не могу этого сделать, я застрял. Каждая другая функция, которую я вижу в объекте Message, включает в себя XmlWriters, поэтому я предполагаю, что они также потерпят неудачу.

По сути, я не могу понять, как взять в руки необработанные байты ответа, без того, чтобы он сначала не прошел через анализатор XML, который выдает исключение XmlException, и я не получаю байты.

ДОПОЛНИТЕЛЬНЫЙ

Я добавил строки в app.config для записи пакетов в файл SVCLOG, и плохой пакет там тоже не отображается! Я вижу другие запросы и ответы, а также запрос, который приводит к неправильному ответу, но я не вижу никакого ответа в файле SVCLOG.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...