2

我正在使用 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>

在这种情况下,我如何允许和处理原始请求?我查看了 API,唯一相关的类(WebOperationContext.Current.IncommingRequest)没有任何方法来检索原始消息......

谢谢Z...

4

2 回答 2

3

创建一个 XElement 类型的输入参数,您可以按照您想要的任何方式查询 XML。

于 2011-07-05T15:26:00.577 回答
3

除了 Maurice 的建议(适用于 XML 内容),如果您想要任何内容​​类型的原始字节,您可以使用 Stream 参数(更多信息在http://blogs.msdn.com/b/carlosfigueira/ archive/2008/04/17/wcf-raw-programming-model-receiving-arbitrary-data.aspx),它会将整个请求正文映射到该参数。

于 2011-07-05T16:43:01.210 回答