2011-03-23 2 views
2

Silverlight 응용 프로그램에서 사용자 지정 응답 메시지 헤더를 가져 오려고합니다. 서버 측 새로운 MessageHeader에Silverlight에서 WCF 서비스 응답에서 사용자 지정 SOAP 헤더를 가져 오는 방법은 무엇입니까?

가 응답 헤더에 추가 :

OperationContext.Current.OutgoingMessageHeaders.Add(MessageHeader.CreateHeader("headerName", "headerNS", "The header value")); 

내가 피들러이 헤더 볼 수

S : 봉투 [ 에 xmlns : S = HTTP : // schemas.xmlsoap.org/soap/envelope/ ]

의 : 헤더

  using (new OperationContextScope(proxy.InnerChannel)) 
      { 
       var headers = OperationContext.Current.IncomingMessageHeaders; 
       // headers is null :(

      } 

사람이 유사한 문제를 발생합니까 : 헤더 이름 [의 xmlns = headerNS 상기 헤더 값

, 나는 Silverlight 응용 프로그램 서비스 콜백에서 헤더 값을 읽을 수있는 방법을 찾을 수 없습니다?

답변

0

http 요청에서 헤더를 가져 오려면 Client HTTP stack을 사용해보십시오.

을 수행하는 easies 방법은 예를 들어, 접두사를 등록하는 것입니다

실버 라이트에 대한 응답에 SOAP 헤더를 얻기
WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp); 
+0

답변 해 주셔서 감사합니다.하지만 SOAP 메시지 헤더에 대한 질문입니다. – Brick

+0

예, 이해하지만, SL의 HTTP 클라이언트 스택과 관련이 있다는 생각이 들었습니다. 나는 이것을 조사하려고 노력할 것입니다. 아마 당신을 도울 방법을 찾을 것입니다. –

1

은 그것이 있어야만큼 쉬운 일이 아닙니다. 이벤트 기반 콜백을 사용하면 운이 없어진 것입니다. 단지 작동하지 않습니다. 아래 예제와 같이 Begin/End 스타일 작업 호출을 사용해야합니다. 당신이 시작하기 때문에 직접, 당신은 인터페이스로 캐스팅해야합니다 (/ slsvcutil에서 서비스 참조를 추가) 생성 된 클라이언트를 사용할 수 없습니다

void Button_Click(...) 
{ 
    MyClient client = new MyClient(); 
    IClient proxy = (IClient)client; // need to cast to the [ServiceContract] interface 
    proxy.BeginOperation("hello", delegate(IAsyncResult asyncResult) 
    { 
     using (new OperationContextScope(client.InnerChannel)) 
     { 
     proxy.EndOperation(asyncResult); 
     var headers = OperationContext.Current.IncomingMessageHeaders; 
     // now you can access it. 
     } 
    }); 
} 

공지 사항/종료 방법은 클라이언트에서 (명시 적으로 구현) 노출되지 않습니다 수업.

관련 문제