Почему связь WCF является tcp, даже если я говорю http в URI? - PullRequest
0 голосов
/ 23 марта 2011

Я создал сервер WCF на ПК с именем PC1.Я получаю доступ к URI http://PC1:8000/ServiceModelSamples/Service с помощью Internet Explorer с другого компьютера с именем PC2.

Когда я отлаживаю сообщения в Wireshark, меня смущает то, почему нет HTTP-сообщения, хотя я указываю «http://" в моем URI. Он показывает только протокол TCP, нет HTTP-сообщения или заголовка.

Пожалуйста, совет

Ответы [ 3 ]

4 голосов
/ 23 марта 2011

Для wireshark любой запрос браузера - это просто другое TCP-соединение.Что касается показа подробностей протокола HTTP, то можно предположить, что трафик на конкретном порту (80) будет http.Поскольку вы используете нестандартный порт http, возможно, он не сможет этого сделать.

Чтобы подтвердить это, попробуйте загрузить другой веб-сайт / веб-страницу (например, www.google.com) и посмотреть,возможность показать вам подробности http.Если это работает, то следующим шагом будет попытка найти некоторые настройки / конфигурации, с помощью которых вы можете указать wireshark, что он должен обрабатывать трафик с другого порта (8000 в вашем случае) как трафик http.:

См. этот вопрос как руководство по настройке wireshark для http-портов.

1 голос
/ 23 марта 2011

Когда вы входите в сервис через браузер, «дружественный» сервис генерирует веб-форму для вашего браузера.Если вы вернули веб-страницу в свой браузер, она будет HTTP.Это не является частью спецификации «SOAP», но является частью стека MS WCF, поддерживающего HTTP.

Затем, если вы заполните его, вы можете выполнить POSTing или GETing форму, но POST используется по умолчанию,Это тоже HTTP.GET часто отключается в WCF.

Затем вы возвращаете XMLish в ваш браузер, который также поставляется по HTTP.

Так что вы можете просто пропустить декодирование протокола HTTP в wireshark.

РЕДАКТИРОВАТЬ: Я не видел ваш URL включен: 8000.Wireshark не будет декодировать его как HTTP, если вы не принудительно его принудите, потому что он не находится на порте HTTP.Вы можете щелкнуть правой кнопкой мыши по пакету порта 8000 и сказать «следите за разговором», и вы увидите всю полноту http.Вы также можете принудительно заставить Wireshark декодировать этот поток как HTTP, что позволит вам «углубиться» в пакеты, прошедшие уровень TCP.

1 голос
/ 23 марта 2011

HTTP - это протокол прикладного уровня, который находится поверх TCP, протокола транспортного уровня.

См. http://en.wikipedia.org/wiki/TCP/IP_model для получения дополнительной информации.

...