'xxx' 연산은 System.ServiceModel.Channels.Message 타입의 매개변수 또는 반환 타입이거나 MessageContractAttribute 및 기타 매개변수를 가진 타입을 가지고 있어 로드할 수 없습니다 여러 종류에 해당합니다. System.ServiceModel.Channels.Message 또는 MessageContractAttribute가 포함된 타입을 사용할 때, 메서드는 다른 유형의 매개변수를 사용해서는 안 됩니다. WCF에서 파일을 업로드하는 인터페이스를 작성했고, 업로드 결과를 반환하고 싶습니다. 인터페이스는 다음과 같습니다:
이 시점에서 실행은 다음과 같이 작성되면 오류를 보고합니다:
실행 중에도 오류가 보고됩니다!!!
앞서 말했듯이, 듀플렉싱이란 서로 오가는 거죠? 네, 위 방법은 들어오는 파라미터와 반환 값이 있고, 들어오고 가는 방식이 있으며, 듀플렉스이니 왜 안 되겠습니까?
하하, 문제는 메시지 프로토콜을 사용한다는 점입니다. 이 전제 하에서는, 메시지 프로토콜 메서드를 사용해 쉽게 정의할 수 없습니다. 만약 다음과 같다면:
a. 메시지 계약이 들어오는 매개변수로 사용된다면, 매개변수는 하나만 존재할 수 있으며, 다음 정의들은 부정확합니다:
무효 조정(BankingTransaction bt1, BankingTransaction bt2);
b. void를 반환하지 않는 한, 그렇지 않으면 메시지 계약을 반환해야 합니다. UpLoadFile(TransferFileMessage tMsg) 우리의 정의는 명백히 요구사항을 충족하지 않습니다.
그렇다면 어떻게 해결해야 할까요? 우리는 반환을 위한 또 다른 메시지 계약을 정의해야 합니다.
대략적으로 말하면, bool, string 등은 반환 값으로 사용할 수 없고, void와 no return value 타입을 설정할 수 있습니다.
하지만 만약 수익 가치가 있다면 어떨까 궁금합니다???? 해답은 다음과 같습니다:
|