2017-04-21 3 views
0

Da ich mit einem SOAP-Webdienst kommunizieren wollte, hatte ich C# -Klassen, die von SvcUtil.exe aus der WSDL-Datei erstellt wurden..NET SOAP sendet keine BASIC-Authentifizierung im Anforderungsheader

Beim Senden der Anforderung unten an einen sicheren Server (HTTPS mit BASIC Auth) erhalte ich eine System.ServiceModel.Security.MessageSecurityException und beim Überprüfen der HTTP-Anfrage durch den Durchgang von Verkehr durch einen Burp-Proxy sehe ich keine BASIC-Auth-Informationen ist bestanden. Fehlt etwas für die SOAP-Anfrage im C# -Code oder was könnte das Problem sein, dass die BASIC-Auth nicht funktioniert?

var binding = new WSHttpBinding(); 
binding.MessageEncoding = WSMessageEncoding.Mtom; 

binding.Security.Mode = SecurityMode.Transport; 
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; 
binding.Name = "BasicAuthSecured"; 

SearchServicePortClient searchClient = new SearchServicePortClient(binding, new EndpointAddress("https://myUrl:Port/myService")); 
searchClient.ClientCredentials.UserName.UserName = "username"; 
searchClient.ClientCredentials.UserName.Password = "pw"; 

query soap = new query(); 
//... 

queryResponse response = searchClient.query(soap); 

Vielen Dank im Voraus

Antwort

0

Try TransportWithMessageCredential verwenden:

binding.Security.Mode = SecurityMode.TransportWithMessageCredential;