0

我有 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 个)吗?

谢谢

4

1 回答 1

1

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

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

于 2013-10-25T01:34:28.283 回答