我建立它返回一个复合对象,它类似于一个WCF Web服务返回的XmlElement如下:WCF无法从XmlDataDocument.DocumentElement
[DataContract]
public class WebServiceReturn
{
...
[DataMember]
public XmlElement Results { get; set; }
...
}
当我返回WebServiceReturn对象用下面的代码,一切都很好:
XElement cities = new XElement("Cities",
from r in results
select new XElement("City", r));
using (XmlReader xmlReader = cities.CreateReader())
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlReader);
WebServiceReturn response = new WebServiceReturn();
response.Results = xmlDoc.DocumentElement;
}
然而,当我使用下面的代码,这需要从存储过程调用返回一个XmlDataDocument的结果的的XmlElement,一个的CommunicationException抛出(没有内例外)。
XmlDataDocument xdd = DataAccess.ExecuteXML("MyStoredProc", parameter);
response.Results = xdd.DocumentElement;
混乱的部分是,如果我转换XmlDataDocument.DocumentElement(这是一个的XmlElement)转换成的XElement再放回一个的XmlElement,不存在任何问题(哇这是一个一口) - 所以下面的代码没有问题返回。
XmlElement xe = DataAccess.ExecuteXML("MyStoredProc", parameter).DocumentElement;
XDocument xDoc = new XDocument();
using (XmlWriter xmlWriter = xDoc.CreateWriter()){
xe.WriteTo(xmlWriter);
}
using (XmlReader xmlReader = xDoc.Root.CreateReader())
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlReader);
response.Results = xmlDoc.DocumentElement;
}
的细节的CommunicationException是:
[的CommunicationException:服务器未提供有意义的回复;这可能是由合同的不匹配,过早的会话关闭或内部服务器错误引起的。]
我已经多次已经没有效果还更新在我的测试应用程序的服务引用。
与被调用Web服务我的测试代码中的问题?为什么要将XmlElement转换为XElement,然后返回到XmlElement中解决该问题?任何信息都将非常感谢! :)
谢谢!这也适用 - 仍然很高兴知道与XmlDataDocument的文档元素和WCF工作的确切问题是通过:) – 2009-12-17 01:24:38