WebGet-Methoden und nicht WebGet-Methoden im WCF-Restdienst

8

Das Folgende ist mein Vertrag und die OperationContracts, mein Problem ist, wenn ich mit dem WebGet-Attribut zu allen Methoden gehe, die mein Dienst gut funktioniert, wenn ich das WebGet-Attribut zu einem der OperationContracts im folgenden Fehler entferne. p>

  

Operation 'ProductDetails' von   Vertrag 'IDemo' gibt mehrere an   Anfrage Körperparameter zu sein   ohne Wrapper serialisiert   Elemente. Höchstens ein Körperparameter   kann ohne Wrapper serialisiert werden   Elemente. Entweder entfernen Sie den zusätzlichen Körper   Parameter oder setzen Sie den BodyStyle   Eigentum auf dem   WebGetAttribute / WebInvokeAttribute zu   Wrapped.

Das sind meine Methoden

%Vor%

Ist es zwingend erforderlich, das Attribut [WebGet] in alle Operationsverträge aufzunehmen, wenn wir WebHttpbinding ??.

wählen %Vor%     
venkat 06.05.2011, 05:05
quelle

1 Antwort

17

Die Fehlermeldung sagt wirklich genau was das Problem ist:

  

Operation 'ProductDetails' des Vertrags   'IDemo' gibt mehrere Anforderungen an   Körperparameter, die serialisiert werden sollen   ohne irgendwelche Verpackungselemente. Höchstens   Ein Body-Parameter kann serialisiert werden   ohne Wrapper-Elemente.

Sie können keine Methoden haben, die mehr als einen Parameter erwarten, es sei denn, Sie verpacken diese, z. durch Angabe der Einstellung BodyStyle im Attribut WebGet .

Also ja: entweder müssen Sie eine [WebGet] auf jede Methode Ihres REST-Service anwenden, oder Sie können Ihre Methoden reorganisieren, um nur einen einzigen Parameter aufzunehmen (zB indem Sie die zwei oder drei Parameter, die Sie jetzt haben, zusammenfassen) eine einzelne Klasse, die diese mehreren Parameter enthält und dann eine Objektinstanz dieser Request-Klasse übergibt).

%Vor%     
marc_s 06.05.2011, 05:20
quelle

Tags und Links