【发布时间】:2014-03-07 08:24:39
【问题描述】:
我有一个 WCF 服务,我需要一种方法接受 HTTP POST 请求,而另一种方法必须是非 REST。考虑下面的代码:
[OperationContract]
long[] Send(string body, List<string> phoneNumbers);
[OperationContract]
[WebInvoke(Method="POST", BodyStyle = WebMessageBodyStyle.WrappedRequest)]
long[] SendByPost(string body, string phoneNumbers);
但我不知道为什么会出现以下错误:
合约“IService”的“发送”操作指定多个请求 无需任何包装元素即可序列化的主体参数。最多 一个主体参数可以在没有包装元素的情况下进行序列化。任何一个 删除额外的 body 参数或设置 BodyStyle 属性 WebGetAttribute/WebInvokeAttribute 到 Wrapped。
我该如何解决这个问题?
【问题讨论】:
-
我认为问题出在
List<string> phoneNumbers。默认情况下,WebInvoke 是GET,但不能从 URL 反序列化List<string>。我认为如果您将其更改为string[] phoneNumbers应该可以工作。 -
我的问题是我不希望 URL 中的 Send 方法可用,只有第二种方法必须启用 REST!
-
然后删除
OperationContract属性。 -
@wdosanjos 他无法删除 OperationContract