Подтвердить что ты не робот

Действия WCF Soap в заголовке HTTP или заголовке SOAP?

Я немного смущен тем, как SOAPAction реализуется в WCF (и в других средах веб-сервисов).

В тестовом клиенте у меня есть Client Message Inspector, настроенный для захвата как сообщения 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"

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

Спасибо!

4b9b3361

Ответ 1

Это проблема, когда WCF не соответствует стандартам.

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

Подробную информацию см. на странице o'reilly.

Ответ 2

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

Ответ 3

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

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

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

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

Ответ 4

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

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