我有一个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响应,我会收到错误。
有什么想法吗?
答案 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;