Operacja 'xxx' nie mogła być załadowana, ponieważ ma parametr lub typ zwrotu typu System.ServiceModel.Channels.Message lub typ zawierający MessageContractAttribute i inne parametry różnych typów. Przy użyciu System.ServiceModel.Channels.Message lub typów z MessageContractAttribute, metoda nie może używać innych typów parametrów. Napisałem interfejs do przesyłania plików w WCF i chcę zwrócić wynik przesyłania, interfejs wygląda następująco:
W tym momencie przebieg zgłasza błąd, jeśli zostanie zapisany w następujący sposób:
Błędy będą również zgłaszane podczas uruchamiania!!!
Jak już wcześniej wspomnieliśmy, co to jest duplexing, to jest wymiana zdań, prawda? Tak, powyższa metoda ma parametry wejściowe i wartości zwrotne, są przyjścia i odchody, jest to duplex, czemu nie?
Haha, problem polega na tym, że używamy protokołu wiadomości, na tym założeniu naszej metody nie można zdefiniować przypadkowo, używając metody protokołu wiadomości, jeśli:
a. Jeśli kontrakt wiadomości jest używany jako parametr przychodzący, może istnieć tylko jeden parametr, a następujące definicje są nieprawidłowe:
unieważnienie Reconcile(BankingTransaction bt1, BankingTransaction bt2);
b. Jeśli nie zwrócisz void, jeśli nie, musisz zwrócić kontrakt wiadomości, bool UpLoadFile(TransferFileMessage tMsg) Nasza definicja oczywiście nie spełnia wymagań.
Jak więc to rozwiązać? Musimy zdefiniować inny kontrakt na powrót wiadomości.
Mówiąc ogólnie, nie możesz używać bool, string itd. jako wartości zwrotnych, możesz ustawić void no return value.
Zastanawiam się jednak, co jeśli istnieje wartość zwrotu???? Rozwiązanie jest następujące:
|