문제

wcf 서비스에 대한 단방향 방법을 만들고 싶었습니다.결함 메시지를 반환하지 않으려면 모든 것이 정상입니다.

wsdl 및 계약 파일에 wscf 블루 코드 생성기를 사용하고 있습니다.

wsdl 작업 요소에는 'Input' 및 'Fault' 하위 요소만 있습니다.서비스를 실행했을 때 단방향 통신에서는 오류 메시지를 선언할 수 없다는 정보를 얻었습니다.해결책 중 하나는 단방향을 false로 설정하는 것입니다.내가 한 일은 잘 작동합니다.오류가 발생하면 메시지가 나타납니다.

그러나 웹 서비스/wsdl 생성 규칙을 위반한 것인지 궁금합니다.wsdl 서비스 스키마 생성기에서 단방향 통신('true'로 설정)을 생성하고 다른 프로그래밍 언어의 다른 생성기도 아마도 동일한 작업을 수행할 것이기 때문입니다.

그럼 내가 한 일이 맞나요?생성기가 코드를 적절하게 생성할 수 있도록 wsdl을 어떻게 변경할 수 있습니까?

이론적으로 단방향 통신에서 오류를 사용할 수 없는 경우 오류를 반환하려면 응답에 추가 구조가 필요합니까?

감사해요!

도움이 되었습니까?

해결책

사실이에요 단방향 작업은 오류를 반환할 수 없습니다. 클라이언트에게.생성하려는 경우 void 일방향이 아닌 WCF에서 서비스 작업을 수행해야 합니다. 빈 출력 요소 추가 WSDL 계약에서 해당 작업을 수행합니다.

.NET 기반 WSDL 파서(예: WSCF.blue 그리고 svcutil)에 대한 단방향 서비스 작업을 생성합니다. <wsdl:operation> 요소 ~하지 않다 상응하는 것을 가지고 있다 <wsdl:output> 요소.

예를 들어 이 WSDL 작업은 단방향이다:

<wsdl:definitions>
    <wsdl:portType>
        ... 
        <wsdl:operation name="Foo">
           <wsdl:input message="tns:FooRequest" />
        </wsdl:operation>
    </wsdl:portType>
</wsdl:definitions>

반면에 빈 값으로 작업을 정의하면 <wsdl:output> 요소(예: 빈 시퀀스)는 다음과 같이 매핑됩니다. void 일방향이 아닌 선택적으로 오류 선언을 포함할 수 있는 .NET의 메서드:

<wsdl:definitions>
    <wsdl:portType>
        ... 
        <wsdl:operation name="Foo">
           <wsdl:input message="tns:FooRequest" />
           <wsdl:output message="tns:FooResponse" />
           <wsdl:fault message="tns:FooFault" />
        </wsdl:operation>
    </wsdl:portType>
</wsdl:definitions>

어디에 <tns:FooResponse> 유형은 간단히 다음과 같이 정의됩니다.

<xs:element name="FooResponse">
    <xs:complexType>
        <xs:sequence/>
    </xs:complexType>
</xs:element>

다른 팁

WCF에서는 단방향 수단 작동이 반환 된 값이없고 클라이언트는 호출의 성공 또는 실패에 대해 신경 쓰지 않습니다.

WCF에서는 WCF를 통해 MSMQ를 작동하는 것과 같이 자연스럽게 단방향이있는 다른 작업을 수행 한 다음 작업이 일반적으로 단방향으로 설정됩니다.

호출 상태를 나타내는 무언가를 반환하려면 한 방향이 올바른 선택이 아닌 경우, 대신 일방 방향이 아닌 일반 WCF 작업을 사용할 수 있습니다.

일방향 조작은 참조 WCF 단방향

나는 당신이 정확한 것으로 느낍니다.모든 유형의 클라이언트 (C #, Java, C ++, PHP)에 대해서는 WSDL이 필요합니다.다른 언어에서도 작동해야합니다.SOAPUI (중립적 인 SOAP 클라이언트)를 사용하여 서비스를 테스트하는 것이 가장 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top