我目前工作的web服务项目已经进行了一半多,我的客户刚刚决定告诉我,我永远不能向客户端应用程序抛出异常。问题是,到目前为止,每当出现验证、数据库或任何其他类型的错误时,我都会抛出FaultException异常。我显然需要在没有更多问题的情况下改变这种行为,但问题是我真的不知道该用什么来代替它。该服务有4-5个端点,它们返回不同的DataContract结构,所以我考虑设计一个具有布尔值(指示失败或成功)和object (如果要抛出序列化异常,我将用它来发送序列化异常)字段的基类,并使所有其他DataContracts继承此结构。但我不确定这是不是最好的选择。你建议我怎么做?
发布于 2011-07-29 15:33:06
这一要求可能是因为Silverlight消费者应该访问服务,而服务不能以适当的方式处理这些异常,除非他们切换到http客户端栈(这有其自身的缺点)。
我们已经通过在每个需要由客户端检查的服务方法签名中包含一个错误输出参数来解决这个问题。这听起来真的比实际情况更糟糕。
发布于 2011-07-29 15:40:09
对于返回某些内容的服务操作,这肯定是有效的。因此,如果您只让这类操作像您建议那样使用它:尝试在服务操作中捕获异常,并将异常包装在返回的数据协定中。
那么具有void返回类型的服务操作呢?您也可以尝试catch,但是如何将状态/错误返回给客户端呢?你会在你的应用中加入这个场景吗?
https://stackoverflow.com/questions/6869893
复制相似问题