2013-01-09 3 views
9

wcf 클라이언트에 액세스하려고합니다. 사람들이 지금 당장 정보를 얻고 있다는 것을 알고 있습니다. 그래서 나는 그것이 작동한다는 것을 알고 있습니다. 내 문제는 내가 그걸 지나갈 수 없다는 것이다. 이 서비스는 상호 인증 서비스입니다. 로컬 컴퓨터의 개인 상점에 적절한 인증서가 있습니다. 심지어 그와 함께, 나는 다음과 같은 예외가 얻을 :SSPI : 사용자 원칙 이름 WCF 클라이언트

A call to SSPI failed, see inner exception 

예외로 깊은 검색을하고 나는이 참조 :

Message : The target principal name is incorrect 

어떻게이 문제를 해결할 수 있습니까? 앱 풀이 실행중인 사용자로 가장해야합니까? Identity \ ServicePrincipleName 또는 Identity \ UserPrincipleName을 추가해야합니까? 이 문제와 비슷한 문제가있는 사람이 있습니까?

답변

0

클라이언트를 다시 생성했으며 output.config 파일의 끝점은 이제 끝점 태그에 <identity> <userPrincipalName value="[email protected]" /> </identity> 입니다. 그래서 새로운 엔드 포인트는 모습 - I 엔드 포인트에서 서버의 이름을 지정하는 경우이 내 문제가 나를 위해

+0

누구나 WCF에 익숙하지 않은 경우 - svcutil.exe를 사용하여 클라이언트를 재생성했으며 output.config가 생성되었습니다. – rhinobear

0

해결

<endpoint address="net.tcp://machinename:6001/ReferenceDataService" binding="netTcpBinding" bindingConfiguration="netTcpBindingConf" contract="IReferenceDataService" > 
    <identity> 
<userPrincipalName value="[email protected]" /> 

, 그것은했다. 클라이언트의 사용자 이름이 아닙니다. 그리고 그것은 SPN이 아니라 UPN이었습니다.

new EndpointAddress(
    new Uri("net.tcp://server:1234/MyWcf/svc"), 
     EndpointIdentity.CreateUpnIdentity("[email protected]")) 

내가 이해 한대로 클라이언트는 예상되는 사용자와 대화 중임을 확인합니다.