WCF服务FaultContract了解

时间:2013-10-25 00:31:58

标签: c# wcf soap faultcontract

我有一个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),因为从未做过回应而只有错误吗?

由于

1 个答案:

答案 0 :(得分:1)

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

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