我正在使用RESTful方法构建一个Web服务,并且正在使用WCF WebHttp API(.NET v4)。 为了满足一些遗留功能,我需要通过POST接受原始XML消息并对其进行处理。例如,我的一个方法如下:
[WebInvoke(UriTemplate = "Hello", Method = "POST")]
public Message ProcessMessage(string xmlMessage)
{
if (String.IsNullOrWhiteSpace(xmlMessage))
{
return WebOperationContext.Current.CreateXmlResponse(ProcessingFailedReply);
}
var message = XElement.Parse(xmlMessage);
return WebOperationContext.Current.CreateXmlResponse(ProcessingSuccessfullReply);
}
但是,每次我尝试将一些xml发送到“/ Hello”时,我都会收到一条消息,告知格式无效,并且需要特定编码的字符串。我想API正在使用标准模式自动序列化xmlMessage。当我访问帮助(“/ help”)时,我获得了xmlMessage的示例格式:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">String content</string>
如何在此方案中以原始方式允许和处理POSTed请求? 我查看了API,唯一相关的类( WebOperationContext.Current.IncommingRequest )没有任何方法来检索原始消息......
由于 Z ...
答案 0 :(得分:3)
创建一个XElement类型的输入参数,您可以以任何方式查询XML。
答案 1 :(得分:3)
除了Maurice(适用于XML内容)的建议之外,如果您想要任何内容类型中的原始字节,您可以使用Stream参数(http://blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-receiving-arbitrary-data.aspx处的更多信息),它将映射整个请求正文到该参数。