在WCF服务中抛出错误异常并在Silverlight中处理
问题描述:
我在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块没有被击中?
感谢您的时间...
答
找到了可能有用的东西。您需要更改Visual Studio中的调试设置。
进入工具 - >选项 - >调试 - >常规,取消选中“启用异常助手”和“启用仅我的代码(仅托管)”
+0
我已经在SL项目上工作了一年多,但我会检查你的建议并尽快报告。非常感谢。感谢你分享这个。 :) – user20358 2012-10-15 12:53:14
你为什么评论与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