Операцията 'xxx' не можеше да бъде заредена, тъй като има параметър или тип връщане тип System.ServiceModel.Channels.Message или тип, който има MessageContractAttribute и други параметри от различни видове. При използване на System.ServiceModel.Channels.Message или типове с MessageContractAttribute, методът не трябва да използва други типове параметри. Написах интерфейс за качване на файлове в WCF и искам да върна резултата от качването, интерфейсът е следният:
В този момент изпълнението ще докладва грешка, ако е написана по следния начин:
Грешки също ще бъдат докладвани при изпълнение!!!
Както казахме по-рано, това, което е дуплекс, има и диалог, нали? Да, горният метод има входящи параметри и стойности на връщане, има идващи и изходящи, той е дуплекс, защо не?
Хаха, проблемът е, че използваме протокола за съобщения, при тази предпоставка нашият метод не може да бъде дефиниран небрежно, използвайки метода на протокола за съобщения, ако:
a. Ако договорът на съобщението се използва като входящ параметър, може да има само един параметър, а следните дефиниции са неправилни:
void Reconcile(BankingTransaction bt1, BankingTransaction bt2);
b. Освен ако не върнете void, ако не, трябва да върнете договор за съобщение, bool UpLoadFile(TransferFileMessage tMsg). Нашата дефиниция очевидно не отговаря на изискванията.
Как да го реша? Трябва да определим друг договор за съобщение за връщане.
Грубо казано, не можеш да използваш bool, string и т.н. като връщащи стойности, можеш да зададеш void no return value type.
Въпреки това, чудя се какво ако има възвръщаема стойност???? Решението е следното:
|