我想抓住WCF客戶端上給定的FaultException。我基本上需要從故障類中提取一個內部描述,以便我可以將它包裝在另一個例外中,以供上層做任何事情。FaultException.Detail回來空
我這樣做成功了一些時間,讓他這一次不同的是,故障被聲明爲一個數組,你可以從上拋出異常的方法的頂部聲明服務引用屬性看到:
[System.ServiceModel.FaultContractAttribute(typeof(FaultClass[]), Action = "http://whatever/", Name = "whateverBusinessFault")]
這是我的代碼:
try
{
// call service here
}
catch (FaultException<FaultClass[]> ex)
{
if (ex.Detail != null && ex.Detail.Length > 0)
{
throw new CustomException(ex.Detail[0].description);
}
else
{
throw;
}
}
問題是詳細(這是一個數組)總是回來空中的代碼,即使我可以看到數據(描述字段等)在SOAP respo中來自WCF跟蹤。
所以我需要的東西肯定會回來,但由於某種原因,它不會被反序列化,或者我無法從代碼中得到它。
任何幫助表示讚賞!
UPDATE:
與@Darin建議,但沒有運氣,我從XmlReader中提取字符串試圖爲 「/ R/N」:
var sb = new StringBuilder();
using (XmlReader reader = fault.GetReaderAtDetailContents())
{
while (reader.Read())
sb.AppendLine(reader.ReadOuterXml());
}
var detail = sb.ToString();
貌似細節部分是根本沒有出現!
如果修改代碼(僅用於測試)僅使用FaultClass(不是數組)? – 2010-09-08 18:22:52
已經嘗試過,它根本沒有發現異常 – JohnIdol 2010-09-08 18:58:34
如果沒有示例故障響應或WSDL – 2014-03-19 23:28:09