WCF - 抛出异常或 FaultException?

标签 wcf exception fault faultexception

什么更有效?抛出异常或抛出错误……我认为有两种情况:

  • 发生异常并被捕获,是否抛出现有的 Exception或新建 FaultException然后扔那个?
  • 您自己的逻辑(例如用户名不能为空)需要将错误作为 Exception 或 FaultException 抛出。你选哪个?

  • 基本上,哪种方式是最佳实践方式?我问是因为我记得在某处读过关于 WCF 装箱或拆箱异常的文章,它会消耗额外的资源等等……所以我猜也是,哪种方法更有效?

    最佳答案

    从 WSDL Contract Perspective 来看,每个操作最多可以有一个响应。但是,您可以定义多个故障契约,它基本上告诉客户端“期望由 DataContractX 定义的响应,或由 FaultContractYFaultContractZ 定义的故障响应。”

    使用 FaultExceptions 可以让您更好地控制 WSDL 的表示方式(或针对已定义的 WSDL 编写合规服务)。

    如果您真正尝试实现互操作性并充分利用 wsdl 和soap 来实现这一点,您将需要使用FaultExceptions。如果您仅在 .NET 交互中使用 WCF,您可以使用异常或故障异常,我认为性能差异不会很大(通过网络进行通信比 WCF 运行时将异常包装到泛型中要重要几个数量级线路传输故障)。

    关于WCF - 抛出异常或 FaultException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6061998/

    相关文章:

    java - 即使我处理了异常并且文件确实存在,我仍然收到 "FileNotFoundException"。

    c# - 运行C#几分钟后计时器错误

    xml - Magento REST API 故障 : invalid xml

    c# - 使用 C# 的 SOA 方法进行身份验证

    wcf - 客户端中的 FaultException 处理?

    node.js - 通过 Apollo Server (NestJS) 处理异常

    java - 为什么 Intent 不需要 ActivityNotFound 异常?

    c - 使用 MPI 的 C 程序中的段错误

    c# - 解析以逗号分隔的键值对

    .net - 我可以在 Windows 服务中托管 WCF 服务吗?