C# WCF客户端中传递的多个参数don';t工作(即使包装了WebMessageBodyStyle)

C# WCF客户端中传递的多个参数don';t工作(即使包装了WebMessageBodyStyle),c#,.net,json,wcf,rest,C#,.net,Json,Wcf,Rest,嗨,各位飞越者 我有一个WCF服务wrtten C#,我可以成功地从jquery之类的东西中使用它 我希望能够通过在C#中添加web服务引用并在代码中调用来使用它。一切都很美好,直到我添加了多个参数。当我尝试调用任何服务方法时,会出现以下错误: 合约“IPublic”的操作“GetStopNames”指定了多个 请求在没有任何包装器元素的情况下序列化主体参数。 在没有包装器元素的情况下,最多可以序列化一个主体参数。 删除额外的实体参数或设置BodyStyle属性 在WebGetAttribute

嗨,各位飞越者

我有一个WCF服务wrtten C#,我可以成功地从jquery之类的东西中使用它

我希望能够通过在C#中添加web服务引用并在代码中调用来使用它。一切都很美好,直到我添加了多个参数。当我尝试调用任何服务方法时,会出现以下错误:

合约“IPublic”的操作“GetStopNames”指定了多个 请求在没有任何包装器元素的情况下序列化主体参数。 在没有包装器元素的情况下,最多可以序列化一个主体参数。 删除额外的实体参数或设置BodyStyle属性 在WebGetAttribute/WebInvokeAttribute上,单击“包装”

我在谷歌上搜索StackOverflow好几年了,但每个人似乎都通过设置来解决他们的问题
BodyStyle=WebMessageBodyStyle.Wrapped
在WebGet/WebInvoke属性中

接口中我的一个服务方法的示例:

    [OperationContract]
    [WebGet( BodyStyle=WebMessageBodyStyle.WrappedRequest
     , UriTemplate = "GetOperators?appKey={apk}"
     , RequestFormat = WebMessageFormat.Json
     , ResponseFormat = WebMessageFormat.Json)]
    ResultList GetOperators(string apk);
这有什么问题吗

我只是打电话

ServiceReference1.PublicClient c = new ServiceReference1.PublicClient();
c.GetOperators("XXX");
在客户端内部,它在第二行中断

有什么想法吗?如果您需要更多数据来帮助回答我的问题,只需添加一条评论:)

编辑: 以下是我的Web.config文件中相关内容的摘录

编辑: 我在评论中链接的serviceContract的快捷方式

我最终改用WebApi,但我仍然保留这个问题,因为我仍然不确定它为什么会失败

     [OperationContract]
    [WebInvoke(Method = "POST", UriTemplate = "GetOperators?appKey={apk}",
     BodyStyle =  WebMessageBodyStyle.Wrapped,
     ResponseFormat = WebMessageFormat.Json,RequestFormat=WebMessageFormat.Json)]
     ResultList GetOperators(string apk);

在.svc文件中,确保Service=“Developer\u Portal.Public”

是GetStopNames中的问题。我假设它是Http Get(WebGet)。确保它接受的所有参数都在uri模板中定义 GetStopNames(字符串p1、字符串p2、字符串p3)

uri=“GetStopNames/{p1}/{p2}?param1={p3}”或GetStopNames?param1={p1}¶m2={p2}¶m1={p3}或任何组合


无法通过添加服务引用为rest生成代理。您是否也有具有相同接口的基于soap的服务?

您能否发布合约“IPublic”的
操作“GetStopNames”的定义?
?这没有什么意义。它非常长,有点像‘public ResultList GetStopNames(string apk,string p){……很多东西……返回一些ResultList();}’这个操作也是用
[WebInvoke(BodyStyle=WebMessageBodyStyle.WrappedRequest)]
修饰的。我不确定我是否明白了。你是说在.svc.cs文件中?如果是这样的话,则不会。我假设由于[ServiceContract]接口充当接口并指定它,所以我不必这样做。(我刚刚测试并添加了一个(405)错误。我在问接口中方法的定义。你能发布你的整个[ServiceContract]接口吗?不是实现,只有接口。