Operațiunea 'xxx' nu a putut fi încărcată deoarece are un parametru sau un tip de returnare de tip System.ServiceModel.Channels.Message sau un tip care are MessageContractAttribute și alți parametri de diferite tipuri. Când se folosesc System.ServiceModel.Channels.Message sau tipurile cu MessageContractAttribute, metoda nu trebuie să folosească alte tipuri de parametri. Am scris o interfață pentru a încărca fișiere în WCF și vreau să returnez rezultatul încărcării, interfața este următoarea:
În acest moment, rularea va raporta o eroare dacă este scrisă astfel:
Erorile vor fi raportate și la rulare!!!
Așa cum am spus mai devreme, ce înseamnă duplexarea, există un du-te-vino, nu-i așa? Da, metoda de mai sus are parametri de intrare și valori de returnare, există veniri și plecări, este duplex, de ce nu?
Haha, problema este că folosim protocolul mesajului, sub această premisă, metoda noastră nu poate fi definită casual, folosind metoda protocolului mesajului, dacă:
a. Dacă contractul mesajului este folosit ca parametru de intrare, poate exista un singur parametru, iar următoarele definiții sunt incorecte:
void Reconcile (BankingTransaction bt1, BankingTransaction bt2);
b. Dacă nu returnezi anul, dacă nu, atunci trebuie să returnezi un contract de mesaj, bool UpLoadFile(TransferFileMessage tMsg) Definiția noastră evident nu îndeplinește cerințele.
Deci, cum să rezolv asta? Trebuie să definim un alt contract de mesaj pentru returnare.
Pe scurt, nu poți folosi bool, string etc. ca valori de return, poți seta tipul void no return value.
Totuși, mă întreb dacă există o valoare de returnare???? Soluția este următoarea:
|