我们正在构建一个包含许多层的大型 Web 应用程序。为了与业务层通信,我们使用了一个服务层,Web 层在需要数据时调用该服务层。不幸的是,如果在业务层抛出异常,似乎Web端的服务正在包装异常并重新抛出它们。我们正在寻找一种清晰的方法来封装错误并记录它,而 WCF 不会在原始异常周围包装新异常。
谢谢
我们正在构建一个包含许多层的大型 Web 应用程序。为了与业务层通信,我们使用了一个服务层,Web 层在需要数据时调用该服务层。不幸的是,如果在业务层抛出异常,似乎Web端的服务正在包装异常并重新抛出它们。我们正在寻找一种清晰的方法来封装错误并记录它,而 WCF 不会在原始异常周围包装新异常。
谢谢
有多种方法可以做到这一点。我相信您提出的解决方案还不错,尽管它的规模不大(将业务特定的错误处理与网络相关的代码混合会产生某种耦合)。所有这一切都取决于您的架构:您可以添加一个肤浅的、轻量级的层,将业务错误转换为 Web 错误,并在 Web 层错误处理代码中进行处理。您还可以进行 AoP 并拦截调用并转换上述层的错误。
FWIW,我们每个公开的 WCF 服务层方法都会捕获一个 System.Exception 并将其传递给一个 HandleException 助手(我猜这也可能是一个基本服务类方法)
处理异常:
if (ex is SomeTypeOfException)
...)