Sono in grado di connettersi al servizio WCF con l'applicazione Win-form, tuttavia non sono in grado di farlo con il servizio Windows. Ogni volta che fuoco aperto() per il proxy getta il seguente erroreIl server ha rifiutato le credenziali del client, WCF come servizio Windows
Il server ha rifiutato le credenziali del client
interno Eccezione: System.Security.Authentication.InvalidCredentialException: Il server ha respinto le credenziali del client .
---> System.ComponentModel.Win32Exception: Il tentativo di accesso non è riuscito
--- Fine dell'analisi dello stack eccezione interna ---
a System.Net.Security.NegoState.ProcessAuthentication (LazyAsyncResult lazyResult)
a System.Net.Security.NegotiateStream.AuthenticateAsClient (NetworkCredential credenziali, vincolante ChannelBinding, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
a System.Net.Security.NegotiateStream.AuthenticateAsClient (NetworkCredential credenziali, String targetName, Protect ionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
a System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider.WindowsStreamSecurityUpgradeInitiator.OnInitiateUpgrade (Stream flusso, SecurityMessageProperty & remoteSecurity)
provato a cercare la soluzione, ma nessuno raccordo mie esigenze, da qui postato.
Si prega di aiuto ...
Update 1:.
@ A.R, Provato utilizzando
client.ClientCredentials.Windows.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Impersonation;
ma senza alcun risultato.
Aggiornamento 2:
Configurazione servizio WCF
<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>
Aggiornato la domanda si prega di controllare – Bravo
OK, devi effettivamente dire chi è impersonare. Non puoi semplicemente impostare la bandiera e aspettarti che impersoni magicamente qualcuno. Leggi i materiali presentati nel secondo link. –