我正在为外部REST API创建WCF客户端,但是收到以下错误:
OperationFormatter遇到了一个 邮件正文无效
客户端正确地命中服务器并执行我要求的“发布”,但它期望一个不同的响应元素,基本上将“响应”附加到OperationContract名称的名称,例如:
OperationFormatter遇到了一个 邮件正文无效。期待找到 节点类型'Element'的名称 'companyResponse'和命名空间''。 找到名称为“Element”的节点类型 'company'和namespace''
是否有人知道如何删除要添加到名称的“响应”的要求?
其他详细信息(我添加了ReplyAction,但没有任何区别):
[OperationContract(Name="company", Action = "company", ReplyAction = "company")]
[WebInvoke(
Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedResponse,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "companies.xml"
)]
Company AddCompany(Company company);
答案 0 :(得分:2)
操作合同中的BodyStyle已设置为 WrappedResponse 。将BodyStyle更改为 WebMessageBodyStyle.Bare 。
这告诉WCF运行时不要包含包含名称= MethodName +单词“Response”的XML节点的包装器
答案 1 :(得分:0)
如果您发布了正在使用的合同定义,那将会有所帮助。但是,一般情况下,您必须在您尝试调用的合同上附加到方法的OperationContractAttribute实例上设置Name属性,并且还可能设置Action和ReplyAction属性。