Operasjonen 'xxx' kunne ikke lastes inn fordi den har en parameter eller returtype av typen System.ServiceModel.Channels.Message eller en type som har MessageContractAttribute og andre parametere av ulike typer. Når man bruker System.ServiceModel.Channels.Message eller typer med MessageContractAttribute, må metoden ikke bruke andre typer parametere. Jeg skrev et grensesnitt for å laste opp filer i WCF og ønsker å returnere opplastingsresultatet, grensesnittet er som følger:
På dette tidspunktet vil kjøringen rapportere en feil hvis den skrives som følger:
Feil vil også bli rapportert under kjøring!!!
Som vi sa tidligere, hva er duplexing, det er en frem og tilbake, ikke sant? Ja, metoden ovenfor har innkommende parametere og returverdier, det kommer og går, det er en dupleks, hvorfor ikke?
Haha, problemet er at vi bruker meldingsprotokollen, under dette premisset kan ikke metoden vår defineres casual, ved å bruke meldingsprotokollmetoden, hvis:
a. Hvis meldingskontrakten brukes som en innkommende parameter, kan det bare være én parameter, og følgende definisjoner er feil:
ugyldig avstemming(BankingTransaksjon bt1, BankingTransaksjon bt2);
b. Med mindre du returnerer void, hvis ikke, må du returnere en meldingskontrakt, bool UpLoadFile(TransferFileMessage tMsg). Vår definisjon oppfyller åpenbart ikke kravene.
Så hvordan løse det? Vi må definere en annen meldingskontrakt for retur.
Grovt sagt kan du ikke bruke bool, string osv. som returverdier, du kan sette void no return-verditypen.
Men jeg lurer på om det finnes en avkastningsverdi???? Løsningen er som følger:
|