1

我一直在 WCF 中弄脏我的手。现在我想到的一个问题是关于 WCF 中的故障合同。

我想知道我们为什么需要它。考虑一个我添加 2 个数字的示例应用程序。

所以在响应中我喜欢 2 个字段

结果 - 成功/错误

错误 - 错误详细信息(代码 + 文本)

现在,如果我的 WCF 服务有任何异常,我可以在 catch 块中捕获它并将值分配给 Response 对象

结果 - 成功/错误

错误 - 错误详细信息(代码 + 文本)

那么故障合约在哪里出现呢?

4

2 回答 2

3

您在示例中所做的是通过“返回代码”向调用者指示发生了错误。故障契约代表了一种不同的方法:异常。

异常被认为比返回码更好的原因有很多。例如阅读以下内容:您更喜欢哪个以及为什么更喜欢异常代码或返回代码?. 这就是为什么 WCF 的架构师选择提供故障契约机制,而不是通过返回码实现相同的功能。

在您的情况下,故障合同方法将要求您不应该返回响应对象。您应该简单地返回一个 int。如果发生任何阻止您返回 int 的异常情况,您的代码将抛出一个强类型的错误,向调用者指示出了什么问题以及如何克服它。

于 2014-08-07T19:48:12.317 回答
0

这是一个老问题,但我仍然希望为未来的读者发布一些答案。

找到这个网站http://www.c-sharpcorner.com/UploadFile/aravindbenator/wcf-exception-handling-best-ways/

作者说,如果我们不使用Fault Contract,响应数据(从服务到客户端)会包含一些敏感数据。

如果我们没有Fault Contract,在WCF app.config 或web.config 中,我们仍然想要Fault Exceptions 或Web Fault Exceptions,我们将设置为: <serviceDebug includeExceptionDetailInFaults="true" />,但是,如果我们设置<serviceDebug includeExceptionDetailInFaults="false" />了,我们必须在服务操作之上有Fault Contract。

于 2017-04-01T17:57:00.190 回答