2012-10-03 3 views
0

서비스 요청하기 전에 요청을 가로 채려고했습니다. 이 뒤에서비스 계약에 대한 유효성을 검사하기 전에 WCF 서비스 요청을 수정하십시오.

Using WCF Extensibility at Client Side

아이디어는 요청의 ServiceContract 스키마에 대해 검증 될 때, 요청이 유효 나타나야 있도록 요청 내부의 특정 속성을 추가 할 수 있었다.

Move C# WCF Extensibility code to Configuration File

을가 serivce 요청이 클라이언트 측에서 검증되고있는 것 같습니다 그러나 호출이 IParameterInspecterpublic object BeforeCall(string operationName, object[] inputs) 방법에 도달하기도 전에, - 여기 제안

나는 IParameterInspector 및 BehaviorExtension을 사용했다. 내가 속성을 추가하려는 곳.

그러나 단지, 서비스 호출을 다음 오류 받고시 -

통신 개체를 는 System.ServiceModel.ChannelFactory`1는 [SomeService.IServiceContract, 통신에 사용할 수 없습니다 그것 때문에 오류 상태입니다.

요청에 속성을 추가하려면 어디서 서비스 호출을 가로 채야합니까?

클라이언트 측의 스키마에 대한 요청의 유효성을 검사하기 전에이 작업을 수행해야합니다.

답변

0

결함이있는 채널은 일반적으로 클라이언트 요청에 대한 응답으로 서비스에서 발생시키는 예기치 않은 예외 (계약에서 명시 적으로 정의되지 않은 예외)로 인해 발생합니다. BeforeCall 전에 발생하면 다른 원인으로 발생할 수 있습니다.

첫 번째로 염두에 두어야 할 것은 IParameterInspecter을 잘못 연결했는데 통과하지 않는다는 것입니다. 간단한 시나리오로 올바르게 연결되어 있는지 테스트해야합니다.

그렇지 않은 경우 메시지 보안 establishSecurityContext="true"에 정의 된 서비스 메서드 호출 전에 생성 된 인증 요청에서 왔을 수 있으며 예기치 않은 예외로 인증 요청이 거부되고 채널에 오류가 발생하여 사용할 수 없습니다 더 이상.

다른 가능성있는 원인에 대해 생각하는 데 필요한 정보가 충분하지 않습니다. 코드를 확인한 후 추가 조사를 위해 추가 코드 및/또는 구성 샘플을 찾아야합니다.