我想更新一些WCF服务方法,返回字符串以返回XmlDocument对象。我试着按原样返回并将其封装在datacontract对象中。无论哪种方式,我尝试更新服务引用时发生错误。该错误建议将其封装在一个数据合同中,并附上我正在执行的操作合同。这有什么窍门吗?从WCF服务返回XmlDocument不工作
0
A
回答
2
有一种方法返回一个的XmlDocument来自WCF,但您需要使用XmlSerializer
而不是默认序列化程序(DataContractSerialier
) - 下面的代码显示了如何完成。话虽如此,请考虑使用注释中提到的数据传输对象,除非您的方案确实需要传输XmlDocument。
public class StackOverflow_8951319
{
[ServiceContract]
public interface ITest
{
[OperationContract]
string Echo(string text);
[OperationContract, XmlSerializerFormat]
XmlDocument GetDocument();
}
public class Service : ITest
{
public string Echo(string text)
{
return text;
}
public XmlDocument GetDocument()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(@"<products>
<product id='1'>
<name>Bread</name>
</product>
<product id='2'>
<name>Milk</name>
</product>
<product id='3'>
<name>Coffee</name>
</product>
</products>");
return doc;
}
}
static Binding GetBinding()
{
var result = new WSHttpBinding(SecurityMode.None);
//Change binding settings here
return result;
}
public static void Test()
{
string baseAddress = "http://" + Environment.MachineName + ":8000/Service";
ServiceHost host = new ServiceHost(typeof(Service), new Uri(baseAddress));
host.AddServiceEndpoint(typeof(ITest), GetBinding(), "");
host.Open();
Console.WriteLine("Host opened");
ChannelFactory<ITest> factory = new ChannelFactory<ITest>(GetBinding(), new EndpointAddress(baseAddress));
ITest proxy = factory.CreateChannel();
Console.WriteLine(proxy.Echo("Hello"));
Console.WriteLine(proxy.GetDocument().OuterXml);
((IClientChannel)proxy).Close();
factory.Close();
Console.Write("Press ENTER to close the host");
Console.ReadLine();
host.Close();
}
}
1
如果你希望能够通过任意XML上线做的是使用的XElement而不是XmlDocument的最好的办法
的XmlDocument是不可序列
相关问题
- 1. WCF服务:返回后执行工作
- 2. 从WCF服务操作返回空值
- 3. 返回XML从WCF服务
- 4. 从wcf服务返回xdocument
- 5. 从WCF服务返回MembershipUser
- 6. 从WCF服务返回401
- 7. 从wcf服务返回wcf/json结果
- 8. 由于返回数据类型,WCF服务不工作?
- 9. WCF服务 - 不工作
- 10. WCF/Windows服务不工作
- 11. WCF Web服务不工作
- 12. 从XmlElement返回XmlDocument
- 13. Gettinf XML序列化的错误返回从WCF服务的XmlDocument时
- 14. WCF服务返回另一个服务(服务工厂?)
- 15. Excel工作表作为WCF服务的返回值?
- 16. WCF服务操作总是返回false
- 17. WCF服务操作返回对象图
- 18. 从WCF数据服务返回BSonDocuments
- 19. 从WCF服务返回接口
- 20. 从WCF Web服务返回图像
- 21. 从WCF服务返回pdf文件?
- 22. 如何从wcf服务返回图片?
- 23. 如何从WCF Web服务返回XML?
- 24. 从WCF服务返回CookiesContainer对象
- 25. 从WCF服务返回的System.EngineExecutionException
- 26. 从WCF服务中返回SqlDataReader
- 27. 从Odata wcf服务返回所有行
- 28. 从WCF服务返回数据表
- 29. 如何从WCF服务返回Json?
- 30. 从WCF服务返回NHibernate映射类
诀窍是:不要这样做。或者返回字符串,或者更好:为什么你要返回像XML这样笨重的东西? Web服务的重点在于它们将XML goo抽象出来 - 您应该使用正确的业务对象(及其列表)。 –
我同意 - 你不应该像XmlDocument一样返回类型。 –
如果你真的想有一个解决方案或回答你的问题,我建议你用你的代码的例子,编译器的错误消息更新你的问题。 – Kyberias