A operação 'xxx' não pôde ser carregada porque possui um parâmetro ou tipo de retorno do tipo System.ServiceModel.Channels.Message ou um tipo que possui MessageContractAttribute e outros parâmetros de diferentes tipos. Ao usar System.ServiceModel.Channels.Message ou tipos com MessageContractAttribute, o método não deve usar nenhum outro tipo de parâmetro. Escrevi uma interface para enviar arquivos no WCF e quero devolver o resultado do upload, a interface é a seguinte:
Neste momento, a execução reportará um erro se for escrita da seguinte forma:
Erros também serão reportados durante a execução!!!
Como dissemos antes, o que é duplexing, existe um vai e vem, certo? Sim, o método acima tem parâmetros de entrada e valores de retorno, há idas e vindas, é duplex, por que não?
Haha, o problema é que usamos o protocolo de mensagem, sob essa premissa, nosso método não pode ser definido casualmente, usando o método do protocolo de mensagem, se:
a. Se o contrato de mensagem for usado como parâmetro de entrada, só pode haver um parâmetro, e as seguintes definições estão incorretas:
void Reconcile(BankingTransaction bt1, BankingTransaction bt2);
b. A menos que você retorne o void, se não, então deve devolver um contrato de mensagem, bool UpLoadFile(TransferFileMessage tMsg). Nossa definição obviamente não atende aos requisitos.
Então, como resolver isso? Precisamos definir outro contrato de mensagem para o retorno.
De forma geral, você não pode usar bool, string, etc. como valores de retorno, você pode definir o tipo void no return value.
No entanto, fico pensando se houver um valor de retorno???? A solução é a seguinte:
|