Domanda

Sono abbastanza nuovo per SOAP in modo da andare facile su di me. Sto cercando di impostare un servizio SOAP che accetta il seguente formato intestazione:

<soap:Header>
   <wsse:Security>
      <wsse:UsernameToken wsu:Id='SecurityToken-securityToken'>
         <wsse:Username>Username</wsse:Username>
         <wsse:Password>Password</wsse:Password>
         <wsu:Created>Timestamp</wsu:Created>
      </wsse:UsernameToken>
   </wsse:Security>
</soap:Header>

L'applicazione che sto incorporando questo servizio in è un'applicazione Web ASP.NET 3.5 e ho già installato un endpoint SOAP utilizzando WCF. Ho installato un servizio di base per assicurarsi che i lavori WCF e funziona bene (trascurando l'intestazione). Ho sentito che il formato sopra segue WS-Security Così ho aggiunto wsHttpBinding nel web.config:

<service name="Nexternal.Service.XMLTools.VNService"
         behaviorConfiguration="VNServiceBehavior">
  <!--The first endpoint would be picked up from the confirg
  this shows how the config can be overriden with the service host-->
  <endpoint address=""
            binding="wsHttpBinding"
            contract="Nexternal.Service.XMLTools.IVNService"/>
</service>

Ho scaricato un test harness (soapUI) e incollato in un messaggio di prova con l'intestazione di cui sopra ed è tornato con un errore di richiesta Bad 400.

... per quello che vale, sto correndo Visual Studio 2008 utilizzando IIS7.

mi sento come sto andando in tondo modo che qualsiasi aiuto sarebbe impressionante. Grazie in anticipo.

È stato utile?

Soluzione

capito. Sono stato in grado di personalizzare ciò che è stato generato nel WSDL utilizzando MessageContracts ( http: // msdn.microsoft.com/en-us/library/ms730255.aspx ). Questo mi ha permesso di specificare il formato dell'intestazione. Per ogni nodo che i nodi figlio contenuti ho creato una classe per rappresentare quel nodo e gli strumenti di serializzazione NET utilizzato (ad esempio XmlElementAttribute, XmlArrayAttribute, etc.) per specificare come questa dovrebbe riflettersi nel WSDL generato. DataContract potrebbe anche essere utilizzato anche se dal mio DataContract comprensione era solo per i formati di base e non ti permettono di veramente tuffarsi come è formattato.

Spero che questo aiuti chiunque abbia problemi simili.

Se qualcuno che sa più di SOAP trova una falla per favore fatemelo sapere. L'ingresso è molto apprezzato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top