2008-09-26 144 views

回答

1

答案是肯定的它是棘手的,你在界面上失去了强类型。如果你返回一个那么数据可以是XML,文本,甚至二进制图像。对于DataContract类,您可以使用DataContractSerializer对数据进行序列化。

BlogSvc和更具体的RestAtomPubService.cs WCF service了解更多详情。请注意,该源代码还将向您展示如何将不同类型的数据接受到需要内容类型映射器的WCF休息方法中。

+0

我没有在源文件中找到该文件(RestAtomPubService.cs),我错过了它还是被删除了?谢谢。 – 2009-06-26 12:15:02

0

如果您使用的是基于绑定一个XML,那么我相信是没有办法做到这一点。在这种情况下,一个简单的解决方案就是在出现故障时只需要部分消息标志,并在需要时将故障信息存储在某处。对于JSON绑定,您可以使用返回对象的方法,然后返回两种不同类型的对象。如果我没有记错(这很少见),这是可能的,因为如果对象没有序列化属性,JavaScriptSerializer类会使用反射。

2

最好的方式来表明你的WCF Web服务失败将抛出一个FaultException异常。服务web.config文件中有一些设置可以将整个错误消息作为错误的一部分传递给客户端。

另一种方法可能是从同一个基类或接口同时继承你的结果。该服务将返回基本类型的一个实例。然后,您可以使用KnownType属性通知客户端可能会返回多个类型。想想看,它可能会使用Object作为基本类型,但我没有尝试过。

失败或者这些方法,你可以创建包含结果和错误性质和你的客户,然后可以决定采取哪种行动的自定义结果对象。我必须使用Silverlight 2的这种方法,因为Beta 2尚未完全支持错误合约。这不是很好,我通常不会推荐它,但如果它是唯一可行的方法,或者您认为这是您的最佳方法...

如果您在使用ADO.NET数据服务时遇到麻烦,我在那里的经验较少。

Here's some information上实现FaultContracts

相关问题