Получение "на проводе" Размер сообщений в WCF - PullRequest
3 голосов
/ 26 мая 2010

Пока я делаю вызовы SOAP или REST для WCF, мне бы хотелось, чтобы стек каналов на обоих концах (клиент и сервер) записывал размер полученных данных в реальном времени. Я предполагаю, что мне нужно добавить пользовательское поведение в стек каналов с обеих сторон. То есть на стороне сервера я бы записывал объявленный размер IP-заголовка, который был получен (кумулятивно, пока не будут получены все пакеты для этого сообщения). На стороне клиента я бы записал объявленный размер IP-заголовка, который был возвращен с сервера (тот же процесс суммирования).

Но это предполагает, что эта информация видима для пользовательского поведения WCF на уровне стека канала. Возможно, это видно только на уровне ASP.NET (на уровне ниже WCF)? Или, возможно, WCF уже собирает эту информацию "общего размера сообщения", и я могу просто получить доступ к свойству?

Короче говоря, есть ли у кого-нибудь дальнейшее понимание, если и как эта информация доступна? Я должен уточнить, что эти данные «размера» будут собираться в производственной среде как часть обычных вызовов бизнес-логики. Таким образом, я не заинтересован в решениях, предложенных в других местах .

Этот вопрос относится к моему более раннему вопросу о пропускной способности .

Ответы [ 3 ]

7 голосов
/ 26 мая 2010

Если вы настроили трассировку WCF и ведение журнала сообщений , вы можете проверить файл svclog с помощью Просмотр трассировки службы WCF и найти длину содержимого HTTP-запроса в журнале сообщений:

альтернативный текст http://i50.tinypic.com/xfna06.png

1 голос
/ 26 мая 2010

Я думаю, что единственное место, где вы могли бы потенциально получить эту информацию (или как можно ближе к ней), было бы с пользовательским MessageEncoder , который обернул один из предоставленных системой и записал эту информацию.

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

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

0 голосов
/ 22 февраля 2016

Я получил размер сообщения с помощью Fiddler . Это казалось самым ненавязчивым способом, так как не требует никаких изменений в вашем приложении или настройках.

Просто запустите инструмент, сделайте запрос и прочитайте статистику Получено байт

Единственное, что вам может понадобиться - это декодировать тело сообщения, если оно закодировано. При проверке запроса появляется сообщение Тело ответа закодировано. Нажмите для декодирования. Для этого.

...