WCF 异常处理

Posted

技术标签:

【中文标题】WCF 异常处理【英文标题】:WCF Exception Handling 【发布时间】:2011-04-28 02:22:39 【问题描述】:

如果我的 WCF 服务发生异常,将该错误传达给客户端的最佳方式是什么?

我应该将它登录到服务并重新抛出一个肥皂异常吗? 或者我应该记录它并返回一条用户友好的消息?

【问题讨论】:

【参考方案1】:

使用强类型或非类型的 FaultException 是实现此目的的一种方法。 有一篇很棒的文章 Simplifying WCF: Using Exceptions as Faults 描述了如何使用它们。正如文章所指出的,根据服务的复杂性,您可以选择更简单的无类型 FaultException 并将异常信息传递给客户端。

【讨论】:

此链接已损坏。 嗯,我的帖子已经 6 年了...是的,链接已损坏,但它可以在存档中找到:web.archive.org/web/20160323202540/http://www.olegsych.com/2008/…【参考方案2】:

我会记录它并返回一个FaultException。创建 FaultException 时,您可以将其中的用户友好消息传递回客户端。

【讨论】:

【参考方案3】:

异常应该是异常事件,因此您不必担心好消息。如果异常仅在您有错误时发生,只需将其作为通用异常重新抛出并记录。应该不是问题。

但是,当异常作为正常流程的一部分发生时,返回好的消息将是一个好主意。

【讨论】:

以上是关于WCF 异常处理的主要内容,如果未能解决你的问题,请参考以下文章

WCF 异常处理

WCF异常处理

WCF:OneWay OperationContract 上的异常处理

WCF系列教程之WCF客户端异常处理

WCF 异步调用 - 事件处理程序中的异常

如何强制 WCF 线程中未处理的异常使进程崩溃?