4 votes

Comment faire pour que le service web C# produise l'espace de nom soapenv au lieu de soap ?

Existe-t-il un moyen de créer un service web en C#/.NET qui produit normalement du XML comme ceci

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
 <DHeader xmlns="http://www.abc.com" />
</soap:Header>
  <soap:Body>
    <Response xmlns="http://www.abc.com">
      <Result>
        <ErrorObject ObjectID="string" ErrorCode=""  />          
      </Result>
     </Response>
   </soap:Body>
</soap:Envelope>

pour produire un XML comme celui-ci.

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapv:Header>
    <DHeader xmlns="http://www.abc.com" />
  </soapenv:Header>
  <soapenv:Body>
    <Response xmlns="http://www.abc.com">
      <Result>
        <ErrorObject ObjectID="string" ErrorCode=""  />          
      </Result>
    </Response>
  </soapenv:Body>
</soapenv:Envelope>

Cette tentative résout un problème avec un client AXIS consommant un service web .NET. AXIS s'étrangle avec l'espace de noms soap et a besoin d'un espace de noms soapenv. Il n'est pas possible de modifier le côté AXIS.

Toute réflexion ou tout commentaire serait le bienvenu.

Voici l'erreur exacte telle que demandée.

line -1: Element Envelope@http://www.w3.org/2003/05/soap-envelope is not a valid Envelope@http://schemas.xmlsoap.org/soap/envelope/ document or a valid substitution.

1voto

John Saunders Points 118808

soapenv n'est pas un espace de nom - c'est un préfixe d'espace de nom.

Tant que les préfixes font référence au même espace de noms, soap y soapenv se réfèrent à la même chose, et ont une signification identique.

Il semble extrêmement improbable qu'une version d'AXIS soit défectueuse au point de traiter les préfixes de manière spéciale. Vous devez supposer que votre problème est différent. Veuillez afficher l'erreur exacte que vous recevez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X