Ho difficoltà a connettersi a un servizio Web WSE 3.0 di terze parti da un client WCF. Ho implementato la classe personalizzata obbligatorio, come indicato in questo articolo KB:Connessione a un servizio Web WSE 3.0 da un client WCF
http://msdn.microsoft.com/en-us/library/ms734745.aspx
Il problema sembra avere a che fare con l'affermazione di sicurezza utilizzata dal servizio Web - UsernameOverTransport.
Quando tento di chiamare un metodo, ottengo la seguente eccezione:
System.InvalidOperationException:. L' 'WseHttpBinding' '[namespace]' vincolante per il 'MyWebServiceSoap' '[. namespace] Il contratto ' è configurato con una modalità di autenticazione che richiede l'integrità del livello di trasporto e la riservatezza . Tuttavia il trasporto non può fornire l'integrità e la riservatezza ..
E 'in attesa di un nome utente, password, e il numero di CN. Nel codice di esempio fornito dal fornitore, queste credenziali sono raggruppate in un Microsoft.Web.Services3.Security.Tokens.UsernameToken. Ecco l'esempio fornito dal venditore:
Questo funziona bene da un'applicazione 2,0 w / WSE 3.0 installato. Ecco un frammento di codice dal mio cliente WCF:
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
Ho perlustrato il web alla ricerca di una risposta a questa domanda. Alcune fonti mi avvicinano (come l'articolo MS KB), ma non riesco a superare la gobba. Qualcuno mi può aiutare?
Solo per essere sicuri, la terza parte sa che WSE è obsoleto? –
Sei stato in grado di risolvere questo? Qualcuno ha un'idea? Sono attualmente bloccato sulla stessa cosa. –