2010-07-05 64 views
0

我需要将XML文档传递给Web服务。是否可以简单地指定一个方法的合同,说使用WCF将XML文档传递到Web服务

void Method(XmlDocument myDocument);

,并以标准的方式实现它?我需要保持我的Silverlight功能,因此我想避免将XML写入流...这是一个好方法吗?

预先感谢您的提示和答复!

干杯

回答

0

我亲自做过这个(被迫太...)。 WCF在WCF绑定中具有字符串缓冲区和字符串反序列化限制,如果您通过接口发送任何大小的数据,则需要重写该限制。但是,这就是说,如果你的要求是简单地发送XML,然后创建一个类,用WCF XML属性装饰它,然后声明你的接口发送它们。

如果您正在与现有服务进行互操作,您应该能够使用Windows SDK中的WCF服务工具为您创建一个针对该服务的WCF绑定。

+0

嗨,Spence,你写道:“但是,如果你的要求是简单地发送XML然后创建一个类,用WCF XML属性装饰它,然后声明你的界面发送它们。“这听起来很有趣,你能举一些例子吗?请记住,我需要符合Silverlight,它不支持XmlSerializer或这样的东西... – Jamie 2010-07-06 11:30:39

+0

http://msdn.microsoft.com/en-us/library/ms733127.aspx – Spence 2010-07-06 15:01:53

+0

这是多一点像为您提供的教程:http://msdn.microsoft.com/en-us/library/ms733811.aspx – Spence 2010-07-06 15:03:52

1

如果我记错,XmlDocument的不是可序列化(这是需要一个web服务)。

最简单的方法是将XML文件写入到一个字符串(XML),发送给你的互联网服务和那里你可以再次反序列化到一个XmlDocument

+0

您是否想过创建合同,例如void M(string myXml);并将XML作为字符串来回传递? – Jamie 2010-07-05 10:22:57

+0

是的..但我同意Marc_s ..仔细看看为什么你在传递整个XML之前这样做.. WCF做了整个序列化和反序列化,如果对象是可序列化的。 – Noctris 2010-07-05 10:44:15

0

如果你必须在XML文档中,通传它作为一个字符串。但是WCF服务的全部重点是你不必自己调用XML - 只需调用方法并将它传递给一些参数(int,字符串,你自己的类型),WCF运行时就可以处理所有棘手的XML你的东西....

+0

我宁愿需要传递我的XML,然后在Silverlight中使用它,它具有非常有限的XML(序列化/反序列化)功能。因此恐怕我需要将它作为字符串传递...... – Jamie 2010-07-05 10:59:37