1

我们正在构建一个包含许多层的大型 Web 应用程序。为了与业务层通信,我们使用了一个服务层,Web 层在需要数据时调用该服务层。不幸的是,如果在业务层抛出异常,似乎Web端的服务正在包装异常并重新抛出它们。我们正在寻找一种清晰的方法来封装错误并记录它,而 WCF 不会在原始异常周围包装新异常。

谢谢

4

2 回答 2

0

有多种方法可以做到这一点。我相信您提出的解决方案还不错,尽管它的规模不大(将业务特定的错误处理与网络相关的代码混合会产生某种耦合)。所有这一切都取决于您的架构:您可以添加一个肤浅的、轻量级的层,将业务错误转换为 Web 错误,并在 Web 层错误处理代码中进行处理。您还可以进行 AoP 并拦截调用并转换上述层的错误。

于 2011-03-07T15:06:14.310 回答
0

FWIW,我们每个公开的 WCF 服务层方法都会捕获一个 System.Exception 并将其传递给一个 HandleException 助手(我猜这也可能是一个基本服务类方法)

处理异常:

  1. 记录错误
  2. 将异常重新格式化应用于 SOAP 错误(目前我们正在使用WCF Exception Shielding
  3. 应用任何特定于异常的处理(格式if (ex is SomeTypeOfException)...)
于 2011-03-07T15:08:28.000 回答