2012-01-25 2 views
9

WCF 클라이언트와 Java 웹 서비스간에 흥미로운 호환성 문제가 있습니다. 즉, 헤더가 생성되는 방식이 문제를 일으키는 것으로 나타났습니다. 즉, WCF가 사용자 정의 헤더의 네임 스페이스를 사용하여 수행하는 작업뿐만 아니라 헤더의 ActivityId 및 Action 요소가 문제를 일으키는 것입니다. wsdl.exe로 WSDL을 성공적으로 소비했지만 WCF는 자바 웹 서비스가 좋아하지 않는 방식으로 헤더를 조작하는 것으로 보인다. ActivityId 및 Action 요소를 보내지 않는 WCF 클라이언트의 바인딩을 설정할 수있는 방법이 있습니까?WCF 요청에서 ActivityId 제거

+0

는 당신이 우리를 보여줄 수 :

<source name="System.ServiceModel" switchValue="Information" propagateActivity="false"> <listeners> <add name="xml"/> </listeners> 
ActivityId이 활성화 된 경우

, 그것은 의심 서버를 깰 수는 SOAP 헤더에 아래 주입 클라이언트 측에서 구성을 생성 했습니까? –

답변

9

클라이언트에서 추적을 사용하도록 설정 했습니까? 트레이닝 작업을 엔드 투 엔드 추적을 위해 서비스에 흘려 보려고 시도 할 때 활동 ID를 추가하는 것이라고 생각합니다. 활동 추적 플래그를 끄면 작업 헤더에 대한 내 코멘트가 표시됩니다.

+0

이러한 요소를 추가하는 것은 추적이었습니다. 추적 기능을 사용하지 않으면 문제가 해결되었습니다. 자바 웹 서비스는 SOAP 메시지를 아주 잘 해석하지 못했다 (이상한 네임 스페이스 문제). – CodeMonkey1313

+0

어떻게 끄시겠습니까? 그것은 꺼 졌는가? – irperez

+0

@irperez 'ActivityId' SOAP 헤더를 제거하기 위해 비활성화해야하는 설정 범위를 좁혔습니다. – StuartLC

4

이 문제는 일반적으로 WCF 클라이언트가 WCF 이외의 서버에 연결을 시도 할 때 발생합니다. JAX-WS, 웹 스피어 등

그냥 리처드의 생명의 대답과 주소 @의 irperez의 코멘트에 추가 할

, WCF 진단 추적하는 동안 ActivityId을 추가하는 WCF 진단을 방지하기 위해 비활성화 할 필요가 실제 설정을 제거 할 수 있습니다

  • ActivityTracing 설정
  • switchvalue에서 propagateActivityfalse

즉, 변경

0123에 제거
<system.diagnostics> 
    <sources> 
    <source name="System.ServiceModel" switchValue="Information, ActivityTracing" 
      propagateActivity="true"> 
    <listeners> 
     <add name="xml"/> 
    </listeners> 
    </source> 
... 

사람 :

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Header> 
    <ActivityId CorrelationId="5de75017-da08-4ac2-84f2-5374953cc2a1" 
     xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics"> 
     9f076849-e76e-4675-84c1-5026b1c2eb1a 
    </ActivityId> 
    </s:Header> 
관련 문제