2013-03-20 2 views
0

BizTalk에서 .NET 클라이언트로 비누 오류를 보내려고합니다. BizTalk 내가 잘못 계약에 대한 지식없이는 BizTalk에 서비스 참조가있는 .NET 클라이언트가 (BeforeSendReply)WCF 서비스에서 SOAP 오류를 수신 할 수 없습니다.

그래서 나는 messageinspector에서 오류 메시지를 생성하고 고장 계약을 노출 박스 방식의 더 아웃이 없습니다 . BizTalk WCF 서비스는 요청을 받고 오류를 반환하도록 구성됩니다 (테스트 용).

클라이언트가 BizTalk에서 오류를 수신하면 다음과 같이 나타납니다. "서버가 의미있는 응답을 제공하지 않았습니다. 이는 계약 불일치, 너무 이른 세션 종료 또는 내부 서버 오류로 인해 발생할 수 있습니다."

메시지 추적을 설정하면 오류 메시지가 실제로 전송 수준에서 추적된다는 것을 알 수 있습니다.

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"> 
    <s:Header> 
     <a:To s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/anonymous</a:To> 
    </s:Header> 
    <s:Body> 
     <s:Fault> 
     <s:Code> 
      <s:Value>s:Client</s:Value> 
     </s:Code> 
     <s:Reason> 
    <s:Text xml:lang="en-US">BTSError</s:Text> 
    </s:Reason> 
    <s:Detail><DaxFaultContract xmlns="http://MyNamespace"> 
    <ErrorCode>1</ErrorCode> 
    <ErrorText>This is an exception</ErrorText> 
</DaxFaultContract></s:Detail> 
</s:Fault> 
</s:Body> 
</s:Envelope> 

이 난 DaxFaultContract에 대한 지식 없이도 클라이언트가 지정되지 않은 오류 예외를 던질 수있을 것이라고 생각했다.

내가 무엇을 놓쳤는가?

편집 :

이것은 실제로 WsHttpBinding과 작동합니다. net 명명 된 파이프 바인딩을 사용할 때 문제가 발생합니다. 이 경우의 차이점은 무엇입니까?

답변

0

문제는 비누 헤더 "RelatesTo"가 내 오류 메시지에 전달되지 않아서 클라이언트가 오류 메시지를 받았을 때 문제가 무엇인지 알지 못하는 것이 었습니다. WSHttpBinding은 NetNamedPipeBinding과 같은 방식으로 RelatesTo 헤더를 사용하지 않는다고 생각하십니까?