2009-08-11 3 views
1

다른 서버의 콘솔 앱에서 호스팅하는 WCF 서비스와 통신하는 콘솔 앱 클라이언트가 있습니다. 보안 모드 = 메시지로 windows 인증을 사용합니다.WCF : 클라이언트 가장

클라이언트 자격 증명을 가장하기 위해 서비스를 변경하기 전까지는 문제가 없습니다. 나는 그것을 달성하기 위해 할 변화는 다음과 같습니다
1. 내 메소드 서명에 [OperationBehavior(Impersonation = ImpersonationOption.Required)] 추가 서비스 동작
2로 <serviceAuthorization impersonateCallerForAllOperations="true" /> 추가

그때 내 서비스를 호스팅하고 모두 정상적으로 잘 실행됩니다.

ChannelFactory<IService1> channel = new ChannelFactory<IService1>(binding, endPoint); 
channel.Credentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation; 

그때 내 클라이언트를 실행하고 오류 얻을 : 내 클라이언트에서

내가 할 수있는 유일한 것은 추가입니다

서버는 의미있는 답변을 제공하지 않았다을; 이는 계약 불일치, 조기 세션 종료 또는 내부 서버 오류로 인해 발생할 수 있습니다.

내가 클라이언트 구성에 대해 수행해야 할 다른 것이 있습니까?

답변

0

서버 설정이 계약서와 일치하지 않을 수 있습니다. 서버 측에

는 :

  • 는 Windows 인증에 대한 IIS 설정인가요?
  • Windows 인증으로 web.config가 설정되어 있습니까?
  • 는 =

내 생각 엔 당신이 마지막 누락되어있는 경우에 true를 가장하는 설정의 Web.config입니다.

+0

@Tom 여기에서 OperationBehaviour를 변경 한 후 클라이언트를 다시 컴파일 했습니까? – JTew

0

나는 wcf 메소드 호출이 서버 측에서 예외를 일으키는 것으로 의심된다. 서버 측 예외 또는 페이로드를 캡처하기위한 인프라가 있습니까? 그렇지 않으면 트래픽을 기록하기 위해 wcf trace logging과 같은 것을 사용하십시오.

이렇게하면 더 의미있는 오류가 발생합니다.

질문에이 질문을 추가하면 문제의 원인을 파악할 수 있습니다.