Действия мыла WCF в заголовке HTTP или заголовке SOAP? - PullRequest
14 голосов
/ 26 января 2010

Я немного озадачен тем, как SOAPAction реализован в WCF (и других платформах веб-служб в этом отношении).

В тестовом клиенте у меня есть инспектор сообщений клиента, настроенный для захвата как SOAP-сообщения, так и любых заголовков HTTP, отправляемых с запросом. По крайней мере, здесь, в инспекторе сообщений клиента, действие отображается как элемент в заголовке SOAP:

<s:Header>
    <Action ... >http://myurl.com/2009/11/MyService/MyMethod</Action>

Однако, если я просматриваю запрос в Fiddler, элемент Action отсутствует, и вместо этого в заголовках HTTP теперь есть дополнительная запись:

SOAPAction: "http://myurl.com/2009/11/MyService/MyMethod"

Кто-нибудь может объяснить, что, черт возьми, происходит ??

Спасибо!

Ответы [ 4 ]

15 голосов
/ 28 сентября 2012

Эта проблема связана с тем, что WCF не соответствует стандартам.

SOAP 1.1 использует заголовок SOAPAction, чтобы решить, какой метод вызывать, но это было немного беспорядочно, поскольку имя метода было включено в другое место сообщения. SOAP 1.2 решил эту проблему и добавил действие в заголовок типа контента, а также объявил устаревшим заголовок SOAPAction (хотя теперь он является необязательным для тех клиентов, которые все еще хотят его отправлять).

Подробнее см. На странице блога o'reilly .

4 голосов
/ 27 ноября 2011

Скорее всего, вы видите разницу между SOAP 1.1 и SOAP 1.2.

3 голосов
/ 27 января 2010

Мне кажется, что эти два эквивалента, нет? Я предполагаю, что Fiddler просто интерпретирует этот заголовок SOAP "", называя его "SOAPAction". Значение кажется одинаковым, нет?

То, что вы получаете от инспектора сообщений клиента, - это необработанные данные XML (необработанный формат сообщения SOAP), когда они проходят по медному проводу (или оптоволокну). Я бы сказал, что Fiddler дает высокоуровневую HTTP-ориентированную интерпретацию того же XML-сообщения.

Судя по другим сообщениям в блогах и статьям, которые я нашел на Fiddler и SOAP (например, это сообщение в блоге - ознакомьтесь с разделом "Образец захвата" в конце), мне кажется, что Fiddler удаляет заголовки SOAP и интерпретирует / показывает их в произвольном формате, оставляя только тело SOAP, которое будет отображаться как тело отображаемого сообщения.

Есть ли техническая проблема? Или просто вопрос о том, как интерпретировать два формата?

0 голосов
/ 27 ноября 2011

Помещение действия SOAP в заголовок HTTP является частью спецификации SOA, и WCF просто реализует спецификацию SOAP в этом случае.

Читайте здесь: http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528

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