2017-09-07 5 views
2

Ich habe eine Service-Referenz in meinem Projekt hinzugefügt.Generieren von SOAP-Header in MVC C#

Ich brauche im Sicherheitskopf passieren, wie pro unten

<soapenv:Header> 
    <oas:Security> 
     <oas:UsernameToken> 
     <oas:Username>username</oas:Username> 
     <oas:Password>!password</oas:Password> 
    </oas:UsernameToken> 
    </oas:Security> 

Wie die i gesetzt. Wenn du dir ansiehst, wie ich die Anfrage einstelle, ist es möglich, das selbe irgendwie mit den Kopfzeilen zu machen.

Die Sicherheits-Xsds sind in die WSDL eingebettet.

http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd

und

http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd.

Die Anforderung an den Service-Betrieb wird nach unten aufgefüllt:

MyWebService.PortTypeClient client = new MyWebService.PortTypeClient(); 

MyWebService.SecurityHeaderType secHeader = new MyWebService.SecurityHeaderType();  

RetrieveOperationRequest detailsRequest = new RetrieveOperationRequest(); 
detailsRequest.inputParam1 = "1234"; 

var result = client.RetrieveOperation(secHeader, detailsRequest); 

Wie kann ich den Header-Teil erzeugen ???

Sie können sehen, ich übergebe Sicherheit Header, wie dies vom Web-Service erforderlich ist.

Danke.

Antwort

1

Ich habe die Lösung/Workaround gefunden.

Dies wird in der Datei Web.config festgelegt.

<client> 
    <endpoint address="http://localhost:6478/service/1.0" 
    binding="basicHttpBinding" bindingConfiguration="ServiceEndpointBinding" 
    contract="TestService.PortType" name="ServiceEndpoint"> 
    <headers> 
     <ns2:Security xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
     xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
     <ns2:UsernameToken> 
      <ns2:Username>username</ns2:Username> 
      <ns2:Password>!password</ns2:Password> 
     </ns2:UsernameToken> 
     </ns2:Security> 
    </headers> 
    </endpoint> 
</client> 

Leider kann ich die Quelle für diese Lösung nicht mehr finden. Ich bin gerade dabei, diese Frage zu lösen.

Verwandte Themen