WCF,Exceptions&遗产

时间:2011-07-29 07:26:18

标签: wcf exception

我目前正在处理的Web服务项目已超过一半,我的客户决定立即通知我,我不能向客户端应用程序抛出异常。问题是,直到现在,每当有验证,数据库或任何其他类型的错误时,我都会抛出FaultException个例外。我显然需要在没有进一步问题的情况下改变这种行为,但问题是我真的不知道要替换它的内容。该服务有4-5个端点,它们返回不同的DataContract结构,因此我考虑设计一个具有布尔值(表示失败或成功)和object的基类(我将用它来发送序列化的异常)如果它们被抛出)字段并使所有其他DataContracts继承自此结构。但我不确定这是最好的选择。你建议我做什么?

2 个答案:

答案 0 :(得分:1)

这个要求可能是因为Silverlight消费者应该访问不能以正确方式处理这些异常的服务,除非他们切换到http客户端堆栈(它有自己的缺点)。

我们通过在每个需要客户端检查的服务方法签名中包含Fault out参数来解决问题。这听起来确实比在实践中更糟糕。

答案 1 :(得分:1)

这对于返回某些内容的服务操作肯定有效。因此,如果您只有这样的操作,请按照您的建议使用它:尝试在服务操作中捕获并在返回的数据协定中包装异常。

具有void返回类型的服务操作怎么样?您也可以尝试catch但是如何将状态/错误返回给客户端?你会在你的应用程序中发现这种情况吗?