La operación 'xxx' no podía cargarse porque tenía un parámetro o tipo de retorno de tipo System.ServiceModel.Channels.Message o un tipo que tenía MessageContractAttribute y otros parámetros de diferentes tipos. Al usar System.ServiceModel.Channels.Message o tipos con MessageContractAttribute, el método no debe usar ningún otro tipo de parámetro. He escrito una interfaz para subir archivos en WCF y quiero devolver el resultado de subida, la interfaz es la siguiente:
En este momento, la ejecución reportará un error si se escribe de la siguiente manera:
También se reportarán errores durante la ejecución!!!
Como dijimos antes, ¿qué es duplexar? Hay un ir y venir, ¿verdad? Sí, el método anterior tiene parámetros de entrada y valores de retorno, hay idas y venidas, es dúplex, ¿por qué no?
Jaja, el problema es que usamos el protocolo de mensajes, bajo esta premisa, nuestro método no puede definirse de forma casual, usando el método del protocolo de mensajes, si:
a. Si el contrato de mensaje se usa como parámetro entrante, solo puede haber un parámetro, y las siguientes definiciones son incorrectas:
anular Reconciliar (BankingTransaction bt1, BankingTransaction bt2);
b. A menos que devuelvas void, si no, debes devolver un contrato de mensaje, bool UpLoadFile(TransferFileMessage tMsg). Nuestra definición obviamente no cumple los requisitos.
¿Entonces, cómo solucionarlo? Necesitamos definir otro contrato de mensaje para la devolución.
A grandes rasgos, no puedes usar bool, string, etc. como valores de retorno, puedes establecer el tipo void no return value.
Sin embargo, me pregunto qué pasaría si hubiera un valor de devolución???? La solución es la siguiente:
|