我有一个简单的WCF服务,我试图从我的网站上调用。但是当我调用它时,我收到以下错误:
合同'INoteService'的操作'GetNotesByDate'指定 多个请求体参数在没有任何包装器的情况下被序列化 元素。最多一个body参数可以在没有包装器的情况下进行序列化 元素。删除额外的身体参数或设置BodyStyle WebGetAttribute / WebInvokeAttribute上的属性为Wrapped。
然后我按错误提到并添加了BodyStyle属性,但没有任何改变。但错误仍然出现,我不知道为什么会发生这种情况?
我的操作cotracts看起来像这样:
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "/notes/{userId}")]
List<Note> GetAllNotes(string userId);
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "notes/{userId}/{date}")]
List<Note> GetNotesByDate(String userId, String date);
我在我的Web客户端中使用的两行来调用Web服务:
ServiceReference1.NoteServiceClient client = new NoteServiceClient();
List<note> allNotes = client.GetAllNotes("3").ToList();
asp.net网站中的Web配置如下所示:
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="WebHttpBinding_INoteService">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</webHttpBinding>
</bindings>
<client>
<endpoint address="https://localhost:1095/NoteService.svc" binding="webHttpBinding" bindingConfiguration="WebHttpBinding_INoteService"
contract="ServiceReference1.INoteService" name="WebHttpBinding_INoteService" behaviorConfiguration="webHttp"/>
</client>
<behaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
如果有人知道为什么会这样,我会很高兴听到这个错误的原因。 提前谢谢!