为什么我们需要WCF中的故障合同

时间:2014-08-07 19:26:58

标签: wcf faultcontract

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

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

所以在响应中我有2个字段

结果 - 成功/错误

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

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

结果 - 成功/错误

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

故障合同在哪里出现?

2 个答案:

答案 0 :(得分:3)

您在示例中所做的是通过"返回代码"向呼叫者表明发生了错误。故障合同代表了一种不同的方法:例外。

为什么异常被认为优于返回代码有很多原因。请阅读此内容,例如:Which, and why, do you prefer Exceptions or Return codes?。这就是为什么WCF的架构师选择提供故障契约机制,而不是通过返回码实现相同的功能。

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

答案 1 :(得分: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" />,我们必须在服务操作之上设置故障合同。

相关问题