Изменение пространства имен WCF по запросу XML - PullRequest
0 голосов
/ 23 февраля 2012

Я использую WCF для подключения к веб-сервису Apache. Запрос не выполняется, потому что сервер не может проанализировать информацию заголовка. Я говорил с поставщиком услуг, и они указали, что пространства имен находятся в неправильной области. Они должны быть на конверте, а не на теле. Как мне изменить это в .NET, пожалуйста?

Мой запрос:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
   <wsCaller>
     <appVersion></appVersion> 
   </wsCaller>
  </s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <addSvcRecord xmlns="http://ws.dsr.careur.com">
    <svcRecord xmlns="">
      <vin>JMZCR19F200100059</vin> 
      <number>10</number> 
      <date>2012-02-22</date> 
      <mileage>38500</mileage> 
      <mileageType>KILOMETERS</mileageType> 
      <invokeErrorPage>false</invokeErrorPage> 
     </svcRecord>
   </addSvcRecord>
</s:Body>
</s:Envelope>

Должно выглядеть как:

<?xml version="1.0" encoding="UTF-8" ?> 
<SOAP-ENV:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ws.dsr.careur.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ws="http://ws.dsr.careur.com" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header>
     <ws:wsCaller>
       <appVersion></appVersion> 
     </ws:wsCaller>
   </SOAP-ENV:Header>
 <ns0:Body>
   <ns1:getSvcRecords>
     <vin>JMZDE14K280138989</vin> 
   </ns1:getSvcRecords>
 </ns0:Body>
</SOAP-ENV:Envelope>

1 Ответ

3 голосов
/ 23 февраля 2012

Проблема не в том, что пространство имен находится в неправильной области, а в том, что заголовок не находится в пространстве имен (что не совсем то же самое).Вам необходимо поместить свой заголовок в пространство имен в файле конфигурации

<headers> 
  <ws:wsCaller xmlns:ws="http://ws.dsr.careur.com">
     <appVersion>0.1</appVersion>
  </ws:wsCaller> 
</headers> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...