首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebGet服务中的WebGet和非WebGet方法

WebGet服务中的WebGet和非WebGet方法
EN

Stack Overflow用户
提问于 2011-05-06 05:05:35
回答 1查看 17.9K关注 0票数 8

下面是我的合同和OperationContracts,我的问题是,当我使用WebGet属性到我的服务工作正常的所有方法时,当我将WebGet属性移除给任何一个收到以下错误的OperationContracts时。

操作“IDemo”的“ProductDetails”指定要序列化的多个请求正文参数,而不包含任何包装器元素。最多可以在没有包装器元素的情况下序列化一个body参数。要么删除额外的主体参数,要么将WebGetAttribute/WebInvokeAttribute上的BodyStyle属性设置为body。

这些是我的方法

代码语言:javascript
复制
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]

如果我们选择[WebGet],是否必须将WebHttpbinding属性包含到所有操作合同中?

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-06 05:20:30

错误消息确实准确地说明了问题所在:

操作“IDemo”的“ProductDetails”指定要序列化的多个请求正文参数,而不包含任何包装器元素。最多可以在没有包装器元素的情况下序列化一个body参数

除非对这些参数进行包装,否则不能有期望获得多个参数的方法,例如,通过在BodyStyle属性中指定WebGet设置。

是的:要么您必须对REST服务的每个方法应用一个[WebGet],要么您可以重新组织您的方法以只接受一个参数(例如,将您现在拥有的两个或三个参数封装到一个包含这些多个参数的单个类中,然后传入该请求类的一个对象实例)。

代码语言:javascript
复制
[DataContract]
public class AddNumbersRequest
{
   [DataMember]
   public int X { get; set; }
   [DataMember]
   public int Y { get; set; }
}   

[OperationContract]
string AddNumbers(AddNumbersRequest request);
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5906996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档