Ich kann mit der Win-form-Anwendung eine Verbindung zu meinem WCF-Dienst herstellen, kann dies jedoch nicht mit meinem Windows-Dienst tun. Immer wenn ich open () für den Proxy auslöst, wird der folgende Fehler ausgegeben:
Der Server hat die Anmeldeinformationen des Clients abgelehnt
Innere Ausnahme: System.Security.Authentication.InvalidCredentialException: Der Server hat die Anmeldeinformationen des Clients abgelehnt.
--- & gt; System.ComponentModel.Win32Exception: Der Anmeldeversuch ist fehlgeschlagen --- Ende der inneren Ausnahmestapelspur ---
bei System.Net.Security.NegoState.ProcessAuthentication (LazyAsyncResult lazyResult)
bei System.Net.Security.NegotiateStream.AuthenticateAsClient (NetworkCredential Credential, ChannelBinding-Bindung, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
bei System.Net.Security.NegotiateStream.AuthenticateAsClient (NetworkCredential Berechtigungsnachweis, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
at System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider.WindowsStreamSecurityUpgradeInitiator.OnInitiateUpgrade (Stream Stream, SecurityMessageProperty & amp; remoteSecurity)
Ich habe versucht, nach der Lösung zu suchen, aber keine, die meinen Anforderungen entspricht, also gepostet.
Bitte helfen Sie ...
Update 1:
@ A.R., versucht mit
%Vor%aber ohne Erfolg.
Update 2:
WCF-Dienstkonfiguration
%Vor%Danke für Ihre Hilfe. Ich habe die Antwort nach ein paar Tagen einige Forschung und Versuch n Fehler Methode :) Nun, ich weiß, ich bin zu spät, um die Antwort zu posten, aber ich denke, es ist besser spät als nie.
Also hier ist die Lösung
Ich musste einige Änderungen in meinen Konfigurationsdateien vornehmen (sowohl Client als auch Server)
Auf der Client-Seite habe ich <security>
-Tag wie unten gezeigt hinzugefügt
und auch das gleiche Tag auf der Serverseite (WCF-Dienstkonfiguration) hinzugefügt, wie unten gezeigt.
%Vor%Ich hoffe, dies hilft einer Person in Not:)
Der KEY besteht also darin, das <security>
-Tag über den Client und die Serverkonfigurationsdateien gleich zu machen.
Grundsätzlich passiert es, dass Ihr aufrufender Dienst nicht über die entsprechenden Anmeldeinformationen verfügt, wie Sie dies von WinForms aus tun würden. Was Sie brauchen, ist ein Identitätswechsel. Es braucht ein wenig Aufbau und ist irgendwie nervig, aber es wird funktionieren.
Zum Glück hat MSDN einen schönen kleinen Rundgang.
Ссылка
Es gibt einige allgemeinere Informationen zum Thema hier:
Ссылка
UPDATE:
Das Festlegen von Identitätswechsel-Flags ist nicht ausreichend. Sie müssen sich tatsächlich als Berechtigungsnachweis ausgeben, damit es funktioniert. Zum Beispiel:
Welchen Authentifizierungsmodus verwenden Sie in Ihrem WCF-Dienst? Es scheint, als ob die winform-App ausgeführt wird und die richtigen Anmeldeinformationen bereitstellt, während Ihr Windows-Dienst nicht mit den angegebenen Berechtigungen ausgeführt wird oder die übergebenen Anmeldeinformationen nicht gültig sind. Versuchen Sie, Ihre Anfrage mit Fiddler zu überprüfen, wenn Sie von Ihrem winforms vs Windwos Service gemacht werden und sehen Sie den Unterschied.
Sehen Sie sich meine Antwort zu diesem Beitrag an Der Server wurde abgelehnt die Client-Anmeldeinformationen .
Beachten Sie den Sicherheitsknoten.
%Vor%Tags und Links wcf c# windows-services winforms net.tcp