2012-04-13 4 views
0

Ich hoffte, Sie könnten mir helfen. Ich versuche, mich mit einem Webservice eines Drittanbieters zu verbinden, der leider ein WSE 2.0-Dienst ist. Ich versuche, den Client in C# .NET 4.0 mit WCF zu schreiben. Ich habe überhaupt kein Glück, irgendwelche Informationen darüber zu finden. Der Dienst benötigt eine Zeichenfolge für den Benutzernamen und das Passwort. Hier sehen Sie, wie das Beispiel aussieht:Mit .NET 4.0 WCF, um eine Verbindung zu WSE 2.0 WebService mit Benutzer/pass

Using webServiceObject As Microsoft.Web.Services2.WebServicesClientProtocol = New WSOData.Webservices.TransactionWebService() 
https = ConcatenateWebserviceAddress(request.Server.Https, request.Service.Extension) 
epr = New EndpointReference(New Uri(https)) 
webServiceObject.Destination = epr 

Dim WebserviceContext As SoapContext = webServiceObject.RequestSoapContext 

''''' Set the security settings 
' Set the timeout value for how long issued SecurityContextToken security tokens are valid 
WebserviceContext.Security.Timestamp.TtlInSeconds = -1 

'Instantiate a new UsernameToken object. 
Dim userNameToken As New UsernameToken(userName, password, PasswordOption.SendHashed) 

'Add the token to the SoapContext. 
WebserviceContext.Security.Tokens.Add(userNameToken) 

'Generate a signature using the username token, and add the signature to the SoapContext. 
WebserviceContext.Security.Elements.Clear() 
WebserviceContext.Security.Elements.Add(New MessageSignature(userNameToken)) 

Gibt es eine Möglichkeit, dies mit WCF in .NET 4.0 zu erreichen? Ich möchte nicht wirklich auf WSE 2.0 zurückgreifen müssen, wenn ich ihm helfen kann. Ich habe auch keine Kontrolle über den Service, mit dem wir uns verbinden. Jede Hilfe wäre willkommen, ich bin auf keinen Fall ein WCF Experte oder Anfänger.

Vielen Dank im Voraus

+0

Haben Sie Sicherheitsrichtlinien von WSDL für diesen Service? –

Antwort

1

Theoretisch können Sie wahrscheinlich die richtigen Erweiterungen und Verhaltensweisen erstellen WCF zu bekommen & WSE 2.0 Seife produzieren verbrauchen aber Sie sind hier allein. Es gibt einige Interop zwischen WSE 3.0 und WCF, wie in dieser blog post. dokumentiert. Sie können es als Ausgangspunkt verwenden, um zu versuchen, mit dem WSE 2.0-Dienst zu arbeiten. Wenn Sie eine Kopie von Visual Studio 2003 finden können, ist es möglicherweise besser, direkt mit den ursprünglichen WSE 2.0-Komponenten zu arbeiten. Ich erinnere mich vage daran, dass WSE 2.0 über 3 Service Packs verfügt, die nicht abwärtskompatibel sind Sie stimmen mit dem richtigen Service Pack überein. Viel Glück & die besten Wünsche !! :)

0

Ich empfehle Ihnen nicht, WSE2 zu verwenden. Im schlimmsten Fall - wo Wcf nicht in der Lage ist, mit diesem Dienst zusammenzuarbeiten - wäre es besser, den Benutzernamen selbst zu erstellen, es ist nicht zu schwer. Aber um den besten Weg zu bestimmen, veröffentlichen Sie bitte eine funktionierende Seifenprobe (der Lieferant sollte eine liefern)