处理WCF服务错误的最佳做法?

Alo*_*980 5 c# wcf exception

我正在编写某种WCF服务.大多数异常都在BL实现中捕获并在那里处理.我的每个API的返回类型都是一个包含错误代码,错误消息和成功布尔值的类(命名为"结果").

处理异常时,此类会相应更新,最后会发送回客户端.一些例外是非正式的,未处理的.目前,我使用通用try-catch从服务层包装每个BL调用,因此我可以捕获每个未处理的异常并创建一个通用的"result"类,其中包含一般的失败消息,错误代码和success = false.

这是处理异常的好方法,还是应该让服务抛出未处理的异常给客户端?您可以假设客户端无法使用异常中的数据,因此不会从异常中包含的额外信息中受益.

Bon*_*nyT 7

查看异常屏蔽.

这是一个过程,其中服务引发的异常根据您在配置文件中指定的规则映射到故障合同.使用try/catch块可以节省大量的驴工作.

这是一篇帮助你的帖子:

一般而言 - 故障将分为3类:

1)客户端错误 - 客户端已尝试执行不允许的操作,因此需要了解它.例如,无法设置必填字段. - 返回解释故障的特定消息.

2)不影响客户的业务错误.被视为正常操作的错误,例如付款授权检查失败.要么完全隐藏客户端,要么返回一些消息:"执行请求时出错:请稍后再试......"

3)系统错误 - 意外 - 不正常操作:替换为通用消息:"系统错误:呼叫支持"

但在所有情况下,关键是你要删除堆栈跟踪,特别是如果它是一个面向公众的服务.

通过屏蔽,您将有3个故障合同覆盖上述场景,并在屏蔽配置中正确设置文本.

请注意,您通常希望在开发过程中关闭屏蔽,因为它使调试系统成为一种正确的痛苦!