Ich habe erfolgreich einen WS-Client erstellt, der korrekt funktioniert, wenn Sie KEINE Authentifizierung verwenden.
Allerdings muss der Server (WebSphere) jetzt einen WS-Sicherheits-Benutzernamen-Token hinzufügen, und es fällt mir schwer, dies zu tun. Die resultierende SOAP-Nachricht sollte in etwa so aussehen:
%Vor%Ich habe Microsoft WSE 3.0 SDK heruntergeladen und installiert und einen Verweis auf die DLL in meinem Visual Studio 2005-Projekt hinzugefügt.
Ich habe jetzt Zugriff auf die Namespaces von Microsoft.Web.Services3. *, aber ich bin momentan ziemlich ratlos, wie es weitergeht.
Der Client-Code wurde automatisch von einer Web-Referenz generiert, sodass ich nur eine kleine Menge an Arbeit verrichten muss, um die Nachricht an den Server nicht authentifiziert zu senden:
%Vor% Ich habe gerade angefangen mit Microsoft.Web.Services3.Security.Tokens.UsernameTokenManager
zu forschen, aber bis jetzt konnte ich noch nichts anfangen.
Alle Hinweise würden sehr geschätzt werden, da ich keine guten Rezepte im Netz finden kann.
Danke!
Hat es funktioniert, leider vor dem Lesen Wsanvilles großartige Antwort .
Um anderen zu helfen, stelle ich alle Schritte auf, die ich machen muss, um es mit Visual Studio 2005 zu arbeiten:
YourWsNameHttpServiceWse
. Ich habe fast alles im Code gemacht, anstatt mich auf die Konfigurationsdateien zu verlassen, die mit meiner C # -DLL erstellt wurden. Der Code sah folgendermaßen aus:
%Vor%Ich habe meine eigene Richtlinie erstellt, die wie folgt aussieht:
%Vor%Schließlich hat der WebSphere-Server geantwortet, dass Ein erforderlicher Header, der eine Message Addressing-Eigenschaft darstellt, nicht vorhanden ist und die ausgehende Nachricht geprüft wird (mit dem netten Tool Fiddler ) Ich sah die SOAP-Fehlermeldung vom Server, dass der Action-Header fehlte.
Ich habe vergeblich versucht, das SetClientCredential
-Element selbst zu setzen:
Das Problem war, dass selbst wenn ich eine Aktion einstelle, wenn sie über das Kabel gesendet wurde, war sie leer. Es stellte sich heraus, dass ich die WSE-Proxy-Klasse öffnen und dort ein Attribut bearbeiten musste:
%Vor%Danach hat alles gut geklappt.
Stellen Sie sicher, dass Ihre Proxy-Klasse von Microsoft.Web.Services3.WebServicesClientProtocol
erbt.
Sie können dies tun, indem Sie entweder die Proxy-Klasse selbst ändern oder sie über die Befehlszeile mithilfe von generieren wsewsdl3.exe mit dem Schalter /type:webClient
.
Sie können die Anmeldeinformationen dann wie folgt übergeben:
%Vor%Dies ist, was ich in der Vergangenheit getan habe, um WSE3.0 in Studio 2008 zu bekommen. Hoffe, dass das hilft.
Tags und Links c# web-services ws-security wse3.0