Win-form 응용 프로그램을 사용하여 WCF 서비스에 연결할 수 있지만 Windows 서비스에서는 연결할 수 없습니다. System.Security.Authentication.InvalidCredentialException : 서버 클라이언트 자격 증명을 거부했습니다 내가 프록시() 사격 할 때마다이 서버는 가 서버가 클라이언트 자격 증명 인 WCF를 Windows 서비스로 거부했습니다.
내부 예외가 클라이언트 자격 증명
을 거부했습니다다음과 같은 오류를 발생 .
---> System.ComponentModel.Win32Exception : 로그온 시도가 실패
--- 내부 예외 스택 추적의 끝 --- System.Net.Security.NegoState.ProcessAuthentication에서
(LazyAsyncResult lazyResult)
에서 System.Net.Security.NegotiateStream.AuthenticateAsClient (NetworkCredential 자격 증명,의 ChannelBinding 바인딩, 문자열에서 targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
System.Net.Security.NegotiateStream.AuthenticateAsClient (NetworkCredential 자격 증명, 문자열에서 targetName에서 보호 따라서, System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider.WindowsStreamSecurityUpgradeInitiator.OnInitiateUpgrade에서 ionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
(스트림 스트림, SecurityMessageProperty & remoteSecurity는)
솔루션을 찾고 시도, 그러나 아무도 내 요구 사항을 피팅 없다 게시했습니다.
도와주세요 ...
업데이트 1 :. A.R @
, 시도
client.ClientCredentials.Windows.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Impersonation;
를 사용하고 있지만 아무 소용.
업데이트 2 :
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>
질문이 업데이트되었습니다. – Bravo
을 확인하십시오. 실제로 가장 할 사람을 말해야합니다. 플래그를 설정하고 마술처럼 누군가를 사칭 할 것으로 기대할 수는 없습니다. 두 번째 링크에있는 자료를 읽으십시오. –