Operationen 'xxx' kunde inte laddas eftersom den har en parameter eller returtyp av typen System.ServiceModel.Channels.Message eller en typ som har MessageContractAttribute och andra parametrar av olika slag. När System.ServiceModel.Channels.Message eller typer med MessageContractAttribute används får metoden inte använda några andra typer av parametrar. Jag skrev ett gränssnitt för att ladda upp filer i WCF och vill returnera uppladdningsresultatet, gränssnittet är följande:
Vid denna tidpunkt rapporterar körningen ett fel om det skrivs enligt följande:
Fel rapporteras också när de körs!!!
Som vi sa tidigare, vad är duplex, det finns en fram och tillbaka kommunikation, eller hur? Ja, metoden ovan har inkommande parametrar och returvärden, det finns inkommande och går, det är duplex, varför inte?
Haha, problemet är att vi använder meddelandeprotokollet, under denna premiss kan vår metod inte definieras casual, med meddelandeprotokollmetoden, om:
a. Om meddelandekontraktet används som en inkommande parameter kan det bara finnas en parameter, och följande definitioner är felaktiga:
ogiltig avstämning(BankingTransaktion bt1, BankingTransaktion bt2);
b. Om du inte returnerar void, om inte, måste du returnera ett meddelandekontrakt, bool UpLoadFile(TransferFileMessage tMsg). Vår definition uppfyller uppenbarligen inte kraven.
Så hur löser man det? Vi behöver definiera ett annat meddelandekontrakt för att returnera.
Grovt sett kan du inte använda bool, string osv. som returnvärden, du kan ställa in void no return value-typen.
Men jag undrar om det finns ett avkastningsvärde???? Lösningen är följande:
|