【问题标题】:WCF FaultExceptions, SOAP Faults and non-.NET appsWCF FaultExceptions、SOAP 错误和非 .NET 应用程序
【发布时间】:2023-03-22 16:05:01
【问题描述】:

我正在开发我的第一个 WCF WebMethod,并且正在研究错误处理。

在花了一周时间阅读之后,普遍的共识似乎是 WCF WebMethods 中的错误应该以WebFaultExceptionFaultException 的形式抛出。此外,许多教程教导使用FaultException(Of T) 提供更好的功能。这似乎很简单......

然后我发现了一个source,指出当 WebMethod 被非 .NET 应用程序使用时,抛出 CLR 异常并不好,例如Java 等,并且应该使用 SOAP 错误。

有人能否澄清一下 WCF 4.5 中是否内置了自动将 FaultExceptionFaultException(Of T) 转换为外部系统可以处理/理解的 SOAP 错误的逻辑?

一般来说,请其他人如何将错误传达给外部系统?

【问题讨论】:

    标签: asp.net wcf webmethod asp.net-4.5


    【解决方案1】:

    如果您使用 FaultException(Of T),它将与其他 SOAP 技术(如 Java)互操作。这篇 SO 帖子解释了它 - WCF/WebService: Interoperable exception handling。这就是我为 Java 客户端所做的。如果您需要更多详细信息,请告诉我。

    【讨论】:

    • 太棒了,谢谢。我包括对 SOAP 故障文档的引用以供参考:w3.org/TR/soap12-part0/#L11549 我将使用 DataContract 属性定义一个类,然后抛出一个 FaultException(Of MyClass)。我在 MyClass 中放入哪些字段是否重要,例如ErrorCode、ErrorDetail 等好吗?它们还应该有一个特定的名称,例如与 SOAP 故障文档匹配的名称 -> 消息和错误代码
    • 好...您可以为这些字段命名任何您喜欢的名称,并让它们包含尽可能多或少量的数据,以满足您的需求。您只需要注意不要暴露敏感数据,例如服务器名称、数据库名称等。尝试使您的命名约定符合行业命名标准始终是一个好主意。祝你好运。
    • 非常感谢。请在不久的将来睁大眼睛了解我的更多问题... :-)
    猜你喜欢
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 2023-03-21
    • 2010-10-23
    • 2012-07-26
    • 1970-01-01
    • 2011-09-09
    • 2015-03-11
    相关资源
    最近更新 更多