我建立它返回一個複合對象,它類似於一個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