【问题标题】:WCF Service FaultContract UnderstandingWCF服务FaultContract理解
【发布时间】:2013-10-25 00:31:58
【问题描述】:

我有一个 WCF 服务和一个 FaultContract。我在 FaultContract 中有一个原因,所以我有这样的东西。

FltInfo.Reason = "This is a test";
throw new FaultException<FaultInfo>(FltInfo, new FaultReason(FltInfo.Reason));

显然,您看到我为我的数据合同定义了 FaultInfo 类。但是,如果我想获得故障代码、详细信息或级别(关键性类型)方面的信息,我需要做什么或怎么做?

如果我不包括其中的一些,我还会收到肥皂故障消息吗?

另外,TRY-CATCH(或者你有什么)触发的故障异常不会终止发送/接收方面的通信吗?这意味着如果我有 1 条消息通过接收,并且 1 条消息有一个列表,比如说 100 个项目(例如一个数组),如果我正在处理 100 个数组并且我可以说第 30 个项目,但它会触发错误。我会不会因为从未完成响应而只是一个错误而失去一切(全部 100 个)?

谢谢

【问题讨论】:

    标签: c# wcf soap faultcontract


    【解决方案1】:

    您可以使用故障异常的各种构造函数添加故障代码等。是的,如果您将它们留空,您将获得 WCF 默认值。另外,如果您在处理列表中的单个项目时抛出错误异常,您将打破正常路径并仅返回您的错误,这也是正确的。

    您可以通过在部分故障中包含您的响应类型以及如何将单个部分标记为无效来修改这一点。或者您的服务可以有一个包装器响应类型,允许您将返回的数据的特定部分标记为无效,因为在您的解决方案中这样做。

    【讨论】:

    • 我决定我正在处理与数据相关的错误,而不是作为故障或异常。我有更多的关键系统项目抛出故障合同。尽管如此,根据系统的不同,它可能不会交付该故障合同。 (例如网络问题、通信问题等)。这听起来像一个适当的机智吗?
    • 听起来与我在生产系统中处理它们的方式相似。针对重大关键问题引发故障,从数据/状态错误返回错误响应。我认为你的选择听起来很适合我。
    猜你喜欢
    • 1970-01-01
    • 2010-10-13
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    相关资源
    最近更新 更多