WebGet und nicht WebGet Methoden in WCF Rest Service
Folgenden ist mein Vertrag und die OperationContracts, mein Problem ist, wenn ich werde mit WebGet-Attribut auf alle Methoden mein service ist in Ordnung, wenn ich entfernen WebGet-Attribut auf einen der OperationContracts im immer folgende Fehlermeldung.
Betrieb 'ProductDetails' von
Vertrag 'IDemo' gibt mehrere
Parameter request-body zu sein
serialisiert, ohne irgendwelche wrapper
Elemente. Höchstens eine Körper-parameter
serialisiert werden kann, ohne wrapper
Elemente. Entweder entfernen Sie die extra Körper
Parameter oder legen Sie die BodyStyle
Immobilie auf der
WebGetAttribute/WebInvokeAttribute zu
Gewickelt.
Diese sind meine Methoden
string AddNumbers(int x,int y); --- using [WebGet]
string SubtractNumbers(int x, int y); -- using [WebGet]
String ProductDetails(string sName, int cost, int Quntity, string binding); -- not using using [WebGet]
CompositeType GetDataUsingDataContract(CompositeType composite); -- not using [WebGet]
Ist es zwingend erforderlich, zu enthalten [WebGet]
- Attribut auf alle den Betrieb Vertrag, wenn wir gehen "WebHttpbinding"??.
public interface IService1
{
[OperationContract]
string GetData(int value,string binding);
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "/Add?num1={x}&num2={y}")]
string AddNumbers(int x,int y);
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "/Subtract?num1={x}&num2={y}")]
string SubtractNumbers(int x, int y);
[OperationContract]
String ProductDetails(string sName, int cost, int Quntity, string binding);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Fehlermeldung wirklich genau das sagt, was das problem ist:
Können Sie nicht über Methoden verfügen, die erwarten mehr als einen parameter, es sei denn, Sie wickeln Sie diese, z.B. durch Angabe der
BodyStyle
Einstellung in derWebGet
Attribut.Also ja: entweder du musst eine
[WebGet]
zu jeder Methode des REST-service, oder Sie können organisieren Sie Ihre Methoden, um in nur einem einzigen parameter (z.B. durch die Zusammenfassung der zwei oder drei Parameter, die Sie jetzt haben, in eine einzige Klasse, hält diese mehrere Parameter, und dann übergeben Sie in Objekt-Instanz der Request-Klasse).