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 ??.
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).