【发布时间】:2011-01-25 20:11:59
【问题描述】:
正如问题所说,我正在思考从一个 WCF 调用中返回多个 FaultExceptions 的最佳方法:
场景如下:
ClientA 调用 ClientB
ClientB 多次调用 ServerC,其中一些可能返回 FaultExceptions
我想将所有的 FaultExceptions 返回给 ClientA,但我没有找到任何好的方法。
我尝试使用 XmlSerializer、DataContractSerializer 和 NetDataContractSerializer 对 FaultExceptions 和 MessageFault 对象进行序列化和反序列化,但均无济于事。
我真正关心的唯一元素是原因、代码和细节。我最后的办法是手动编写代码来序列化原因和代码,但我希望避免这种情况。
还有其他方法可以解决这个我想念的吗?
编辑:从我得到的回复来看,我认为我的问题不是很清楚
在伪代码中,我正在尝试执行以下操作:
class ClientA()
{
Main()
{
ClientB.OperateOnManyValues(array[] values)
}
}
ClientB()
{
OperateOnManyValues(array[] values)
{
foreach(Val val in values)
{
try
{
ServerC.OperateOnOneValue(val)
}
catch(FaultException ex)
{
errorList.Add(ex)
}
}
return errorList
}
}
编辑 2:
首先,我要感谢大家尝试回答这个问题。我觉得有些答案是针对不同问题的答案。
一位发帖人建议我一遇到错误就抛出异常。不幸的是,这就是该系统现在的工作方式。每个操作的值都完全独立于其他值,不受其他值成功或错误的影响。我不希望一个错误影响其他值的处理。
另一位发帖人建议返回某种数据结构,其中包含所有故障的所有 FaultException 数据。这就是我想做的,但问题是返回一个 FaultExceptions 列表会引发序列化错误。有什么方法可以序列化 FaultException 以便我可以从 WCF 调用的列表中返回多个?
【问题讨论】:
-
为什么不直接附加 FaultException 的信息呢?不用序列化,只需要在ClientB处捕获,在传递回ClientA的故障信息中加入故障即可?
标签: c# .net wcf serialization