L’opération 'xxx' ne pouvait pas être chargée car elle possède un paramètre ou un type de retour de type System.ServiceModel.Channels.Message ou un type contenant MessageContractAttribute et d’autres paramètres de différents types. Lors de l’utilisation de System.ServiceModel.Channels.Message ou de types avec MessageContractAttribute, la méthode ne doit utiliser aucun autre type de paramètre. J’ai écrit une interface pour télécharger des fichiers dans WCF et je souhaite retourner le résultat de téléchargement, l’interface est la suivante :
À ce moment-là, l’exécution signalera une erreur si elle est écrite comme suit :
Des erreurs seront également signalées lors de l’exécution !!!
Comme nous l’avons dit plus tôt, qu’est-ce que le duplexage, il y a un va-et-vient, non ? Oui, la méthode ci-dessus a des paramètres d’entrée et des valeurs de retour, il y a des allées et venues, c’est duplex, pourquoi pas ?
Haha, le problème est que nous utilisons le protocole message, sous cette prémisse, notre méthode ne peut pas être définie de manière décontractée, en utilisant la méthode du protocole message, si :
a. Si le contrat message est utilisé comme paramètre entrant, il ne peut y avoir qu’un seul paramètre, et les définitions suivantes sont incorrectes :
annuler Concilier (BankingTransaction bt1, BankingTransaction bt2) ;
b. À moins que vous ne retourniez void, sinon vous devez renvoyer un message contract, bool UpLoadFile(TransferFileMessage tMsg). Notre définition ne répond évidemment pas aux exigences.
Alors, comment résoudre ça ? Nous devons définir un autre contrat de message pour le retour.
En gros, vous ne pouvez pas utiliser bool, string, etc. comme valeurs de retour, vous pouvez définir le type void no return value.
Cependant, je me demande si une valeur de retour existe ???? La solution est la suivante :
|