Ich habe Probleme bei der Verbindung mit einem WSE 3.0-Webdienst eines Drittanbieters von einem WCF-Client. Ich habe die benutzerdefinierte Bindung Klasse implementiert, wie in diesem KB-Artikel angegeben:Herstellen einer Verbindung mit einem WSE 3.0-Webdienst von einem WCF-Client aus
http://msdn.microsoft.com/en-us/library/ms734745.aspx
Das Problem scheint mit der Sicherheit Behauptung durch den Web-Service verwendet, um zu tun zu haben - UsernameOverTransport.
Wenn ich versuche, eine Methode aufrufen, erhalte ich die folgende Ausnahme:
System.InvalidOperationException:. Die 'WseHttpBinding' '[Namespace]' für die 'MyWebServiceSoap' Bindung '[. Namespace] ' Vertrag ist mit einem Authentifizierungsmodus konfiguriert, der Transport-Level-Integrität und Vertraulichkeit erfordert. Doch der Transport nicht Integrität bieten und Vertraulichkeit ..
Es wird einen Benutzernamen, ein Passwort und CN Zahl erwartet. In dem Beispielcode, der uns vom Anbieter bereitgestellt wird, sind diese Anmeldeinformationen in einem Microsoft.Web.Services3.Security.Tokens.UsernameToken gebündelt. Hier ist das Beispiel vom Hersteller geliefert:
Dies funktioniert aus einem 2,0-App w/WSE 3.0 installiert. Hier ist ein Ausschnitt aus dem Code von meinem WCF-Client:
EndpointAddress address = new EndpointAddress(new Uri("<web service uri here>"));
WseHttpBinding binding = new WseHttpBinding(); // This is the custom binding I created per the MS KB article
binding.SecurityAssertion = WseSecurityAssertion.UsernameOverTransport;
binding.EstablishSecurityContext = false;
// Not sure about the value of either of these next two
binding.RequireDerivedKeys = true;
binding.MessageProtectionOrder = MessageProtectionOrder.SignBeforeEncrypt;
MembershipServiceSoapClient proxy = new MembershipServiceSoapClient(binding, address);
// This is where I believe the problem lies – I can’t seem to properly setup the security credentials the web service is expecting
proxy.ClientCredentials.UserName.UserName = "username";
proxy.ClientCredentials.UserName.Password = "pwd";
// How do I supply the CN number?
MyObject mo = proxy.MyMethod(); // this throws the exception
Ich habe das Web durchsucht, um eine Antwort auf diese Frage suchen. Einige Quellen kommen mir nahe (wie der MS KB-Artikel), aber ich kann nicht über den Buckel kommen. Kann mir jemand helfen?
Nur um sicherzustellen, weiß Ihre dritte Partei, dass WSE veraltet ist? –
Konnten Sie das lösen? Hat jemand eine Idee? Ich bin derzeit auf der gleichen Sache fest. –