我在Silverlight啓用的服務中拋出異常並將其捕獲到我的Silverlight客戶端中。我已按照手冊完成了所有工作,但仍然得到我認爲意想不到的行爲。從客戶端在WCF服務中拋出錯誤異常並在Silverlight中處理
try
{
client.ThrowFaultExceptionCompleted += (s, args) =>
{
DoCallback(args);
};
client.ThrowFaultExceptionAsync(new ThrowFaultExceptionRequest());
}
catch (FaultException<MyFaultException> myFex)
{
}
catch (FaultException fex)
{
}
這裏
代碼是從服務
我的自定義錯誤異常類的代碼
[DataContract]
public class MyFaultException
{
private string _reason;
private string _myExceptionStackTrace;
[DataMember]
public string Reason
{
get { return _reason; }
set { _reason = value; }
}
[DataMember]
public string MyExceptionStackTrace
{
get { return _myExceptionStackTrace; }
set { _myExceptionStackTrace = value; }
}
}
的拋出了錯誤例外服務端代碼位。出於測試目的,我從客戶端調用此方法。
[OperationContract]
[FaultContract(typeof(MyFaultException))]
public void ThrowFaultException()
{
MyFaultException mfex = new MyFaultException();
mfex.Reason = "No Reason!";
mfex.MyExceptionStackTrace = "Long stack trace here";
System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
//throw new FaultException<MyFaultException>(mfex ,new FaultReason(new FaultReasonText("My Fault Reason Text here!")), new FaultCode("my fault code here"));
throw new FaultException<MyFaultException>(mfex);
}
不管我扔的FaultException與單一PARAM或這三個PARAMS在註釋行我得到我的Reference.cs文件中的錯誤在Silverlight的代理類類似下面
的一個
它並沒有去任何一個catch塊..這是正常的行爲?我現在必須捕獲回調方法DoCallback(args)中的錯誤,並在該方法中檢查(args.Error == null)。爲什麼catch塊沒有被擊中?
感謝您的時間...
你爲什麼評論與FaultReason參數的行?該錯誤消息需要指定該原因。 – vorrtex 2011-06-11 08:57:29
我以爲它會阻止上圖中的錯誤。原因包裝在MyFaultException對象中。 – user20358 2011-06-11 10:30:08
@ user20358如果您取消註釋'throw new FaultException(mfex,new FaultReason(...),那麼異常消息將會不同。嘗試執行此操作並更新有關更改信息的問題。 –
vorrtex
2011-06-11 12:40:37