Der server lehnte die client-Anmeldeinformationen, WCF-Windows-Dienst
Ich bin in der Lage, eine Verbindung zu meinem WCF-service mit der Win-forms-Anwendung, jedoch bin ich nicht in der Lage zu tun, also mit meinem windows-Dienst. Immer wenn ich Feuer öffnen Sie (), um die proxy-wirft er folgenden Fehler
Server abgelehnt hat, die client-Anmeldeinformationen
Innere Ausnahme: System.Sicherheit.Die Authentifizierung.InvalidCredentialException: Der server
abgelehnt hat die client-Anmeldeinformationen.
---> System.ComponentModel.Win32Exception: Der Anmeldeversuch ist fehlgeschlagen
--- Ende der inneren Ausnahme-stack-trace - - -
System.Net.Sicherheit.NegoState.ProcessAuthentication(LazyAsyncResult
lazyResult)
System.Net.Sicherheit.NegotiateStream.AuthenticateAsClient(NetworkCredential
Berechtigung, ChannelBinding Bindung, String targetName, ProtectionLevel
requiredProtectionLevel, TokenImpersonationLevel
allowedImpersonationLevel)
System.Net.Sicherheit.NegotiateStream.AuthenticateAsClient(NetworkCredential
Berechtigung, String targetName, ProtectionLevel
requiredProtectionLevel, TokenImpersonationLevel
allowedImpersonationLevel)
bei System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider.WindowsStreamSecurityUpgradeInitiator.OnInitiateUpgrade(Stream
stream, SecurityMessageProperty& remoteSecurity)
Versucht, auf der Suche nach der Lösung, aber keine passend zu meinen Ansprüchen, daher gepostet.
Bitte um Hilfe...
Update 1:
@A. R., Versucht, mit
client.ClientCredentials.Windows.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Impersonation;
aber ohne Erfolg.
Update 2:
WCF service Configuration
<system.serviceModel>
<diagnostics performanceCounters="All" />
<bindings>
<netTcpBinding>
<binding name="myBindingForLargeData" maxReceivedMessageSize="5242880" maxConnections="10">
<readerQuotas maxDepth="64" maxStringContentLength="5242880" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
</binding>
</netTcpBinding>
</bindings>
<services>
<service behaviorConfiguration="WCFService.ServiceBehavior"
name="WCFService.CollectorService">
<endpoint address="" binding="netTcpBinding" bindingConfiguration="myBindingForLargeData"
name="netTcpEndPoint" contract="WCFService.ICollectorService" />
<endpoint address="mex" binding="mexTcpBinding" bindingConfiguration=""
name="mexTcpEndPoint" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8010/WCFService.CollectorService/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WCFService.ServiceBehavior">
<serviceMetadata httpGetEnabled="False"/>
<serviceDebug includeExceptionDetailInFaults="True" />
<serviceThrottling
maxConcurrentCalls="32"
maxConcurrentSessions="32"
maxConcurrentInstances="32"
/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielen Dank für Ihre Hilfe. ich bekam die Antwort nach ein paar Tagen von einigen Forschungs-und trial n error " - Methode 🙂 nun, ich weiß, ich bin spät, um post die Antwort, aber ich glaube, es ist besser spät als nie.
So, Hier ist die Lösung
musste ich einige änderungen in meiner Konfiguration Dateien (client & server)
Auf der client-Seite habe ich Hinzugefügt
<security>
tag wie unten gezeigtund auch gleich Hinzugefügt tag auf der server-Seite (WCF service Konfiguration), wie unten gezeigt
Hoffe, dass dies helfen, eine person in not 🙂
Also der SCHLÜSSEL ist, um die
<security>
tag auf der client-und der server-Konfigurations-Dateien.Im Grunde, was passiert ist, dass Ihre calling-Dienst nicht über die richtigen Anmeldeinformationen, wie Sie wäre, wenn der Aufruf aus einer WinForms. Was Sie benötigen, ist ein Identitätswechsel. Es dauert ein bisschen einrichten, und ist die Art von ärgerlich, aber es wird funktionieren.
Glücklicherweise MSDN hat eine nette kleine Anleitung.
http://msdn.microsoft.com/en-us/library/ms731090.aspx
Gibt es einige mehr Allgemeine Informationen zum Thema hier:
http://msdn.microsoft.com/en-us/library/ms730088.aspx
UPDATE:
Einstellung Identitätswechsel flags ist nicht genug. Sie haben, um tatsächlich die Identität eines credential, damit es funktioniert. Zum Beispiel:
Schauen Sie sich meine Antwort auf diesen Beitrag Der server hat die clientanmeldeinformationen zurückgewiesen.
Beachten Sie den Knoten Sicherheit.
<security mode="None"></security>
arbeitete für mich auch. Ich habe die "server abgelehnt hat, die client-Anmeldeinformationen" Fehler beim ausführen meiner client-Anwendung von Rechner A, nicht aber von Maschine B. Es stellt sich heraus, dass dies war, weil die Maschine B die gleiche Windows-Anmeldeinformationen (Benutzername und Kennwort), da mein server-Rechner.Was ist das Authentifizierungs-Modus, den Sie verwenden auf Ihrer WCF-Service? Scheint, wie die winform-app ausgeführt wird, und die Angabe der richtigen Anmeldeinformationen, während Ihr windows-Dienst läuft nicht mit den angegebenen Berechtigungen oder die übergebenen Anmeldeinformationen sind nicht gültig. Versuchen Sie, überprüfen Sie Ihre Anfrage mit Fiddler, wenn aus Ihnen winforms vs Windwos-Dienst und den Unterschied sehen.