Я пытаюсь создать услугу, которую, надеюсь, будет потреблять третье лицо.
Потребитель совместим с SOAP 1.1, поэтому я использую basicHttpBinding для сервера. Когда выполняется фактический запрос, что-то кажется неправильным в отношении типов контента, ожидаемых сервером. Использование basicHttpBinding Я не понимаю, почему сервер все еще ожидает «application/soap + xml», который, насколько мне известно, требуется только SOAP 1.2.
Я использовал wirehark, чтобы выяснить, что именно общались эти два. См. Поток tcp и настройки ниже.
Любая помощь приветствуется.
WCF и Soap 1.1
приложение третья сторона запрос
POST/HTTP/1.1
SOAPAction: http://tempuri.org/ITestService/Hello
Content-Type: Текст/XML; кодировка = UTF-8
Ведущий: shdesktop: 8000
Content-Length: 297
Ожидать: 100-продолжать
соединения: Закрыть
ответ WCF сервера
HTTP/1.1 415 Не удается обработать сообщение , поскольку тип содержимого 'text/xml; charset = utf-8 'не было ожидаемым типом' application/soap + xml; charset = utf-8 '.
Content-Length: 0
Сервер: Microsoft-HTTPAPI/2,0
Дата: Вт, 9 февраля 2010 14:03:19 GMT
Подключение: закрыть
Сервисная конфигурация
<system.serviceModel>
<services>
<service behaviorConfiguration="behTestService" name="ConsoleApplication1.TestService">
<endpoint address="" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint address="TestService" binding="basicHttpBinding"
contract="ConsoleApplication1.ITestService" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="behTestService">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
oh, SOAP 1.1 будет использовать «приложение/мыло + xml»? Я буду тестировать webHttpBinding завтра, спасибо! Я знаю, что это работает, когда я создаю простой asmx-сервис, если он имеет какое-то значение. –
@Silas: «старые» веб-службы ASP.NET (ASMX) ** и ** WCF basicHttpBinding используют SOAP 1.1 - так что все должно быть в порядке. Вам нужно проверить, отправляет ли ваш клиент SOAP-запрос или просто пытается отправить XML на ваш URL-адрес. –
Я звонил http: //, вместо этого мне нужно было позвонить по адресу http: // /TestService. Глупая ошибка. Спасибо за помощь! –