将完整的XML文档发送回使用SOAP通过WCF调用应用程序

时间:2012-02-10 09:47:23

标签: c# xml wcf

我有一个WCF服务,用于根据多个不同的查询生成XML文件。最后,我留下了一个完整的XML文件,我需要一种方法将其传递回调用我服务中的方法的应用程序。如何使用WCF实现这一目标?

我已经尝试了很多东西,例如发送回XmlElement并填充它,但是当我这样做时,我能做的最好的事情就是将根元素和内容传回去,这是不理想的,因为我丢失了标题我需要。

我试过了:

 [OperationContract]
 XmlElement Foo(MyType myType, string user);

string responseXMLString = getPointsResponse.ResponseHeader;

responseXMLString += getPointsResponse.ResponseRecords;
responseXMLString += getPointsResponse.ResponseFooter;

XmlDocument myDocument = new XmlDocument();

myDocument.LoadXml(responseXMLString);

return myDocument.DocumentElement;

这让我整个文件减去标题,但我需要标题。我希望将它作为XML格式的一个对象发回。

当我尝试发回XML文档时,我遇到了很多错误。当我还尝试将其作为字符串发回时,由于它具有特殊字符并干扰SOAP响应,我会收到错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

开箱即用WCF的基于http的绑定都使用soap来包装消息有效负载,但webHttpBinding除外,它支持RESTful风格的接口。

或者您可以看一下如何使用WCF实现POX消息传递,可在此处找到:http://msdn.microsoft.com/en-us/library/aa395208(v=vs.90).aspx

<强>更新

WCF中的REST支持具有完善的安全性程序。例如,http://www.codeproject.com/Articles/149738/Basic-Authentication-on-a-WCF-REST-Service

此外,我会说您应该查看您的服务合同组成,即您的端点上公开的操作的数量和类型。可能是您遇到的这个问题足以将POX操作从SOAP操作解耦到它们自己的服务端点。

答案 1 :(得分:0)

您可以使用以下内容以字符串格式获取它。

return myDocument.DocumentType.ToString() + myDocument.DocumentElement;