使用带有WCF和WP7应用程序的FaultException <t>的未处理异常</t>

时间:2010-12-02 15:48:14

标签: c# silverlight wcf windows-phone-7

我正在使用WP7应用程序中的WCF服务。两者都在一个VS解决方案中。一切正常,直到我试图传回FaultException。

从我的WCF服务抛出FaultException时,我收到消息“EndInvoke中的System.ServiceModel.dll”中发生了'System.ServiceModel.FaultException`1'类型的未处理异常我的代理人。如果我点击继续,则异常不会冒出来。我的处理程序代码永远不会被命中。

我相信我已把所有东西都正确连接好了。我已经看过很多例子,因为我花了一整天的时间在网上搜索这个问题的帮助。如果我停止抛出FaultException,我的应用程序工作正常。

在VS Debug&gt;中例外对话框,我已经尝试在CLR / System.ServiceModel下禁用FaultException和FaultException'1。我也试过去工具&gt;选项,Debuggung&gt;常规并关闭“启用例外助手”和“启用我的代码(仅限托管)。这些都没有使异常在应用程序中冒泡到我的调用方法。

接口代码 -

[OperationContract]
[FaultContract(typeof(NotAuthorizedException))]
List<MyResult> GetValues(DateTime beginDate, DateTime endDate);

异常类型 -

[DataContract]
public class NotAuthorizedException
{
    [DataMember]
    public string Message { get; set; }
}

抛出异常的服务器代码 -

throw new FaultException<NotAuthorizedException>(
    new NotAuthorizedException(),
    new FaultReason("Not authorized."),
    new FaultCode("Sender"));

客户端调用WCF服务 -

try
{
    MyServiceClient myService = new MyServiceClient();
    myService.GetValuesCompleted += new EventHandler<GetValuesCompletedEventArgs>(myService_GetValuesCompleted);

    myService.GetValuesAsync(DateTime.Now, DateTime.Now.AddMonths(6));
}
catch (FaultException<NotAuthorizedException>)
{
    //handle error here
}

它破裂的地方(在Reference.cs中) -

System.Collections.ObjectModel.ObservableCollection<Namespace.MyService.MyResult> _result = ((System.Collections.ObjectModel.ObservableCollection<Namespace.MyService.MyResult>)(base.EndInvoke("GetValues", _args, result)));

代理代码是从“添加服务引用”菜单项生成的未更改代码。

它必须是简单的东西,但我只是没有看到它!

1 个答案:

答案 0 :(得分:3)

我相信你应该抓住FaultException<NotAuthorizedException>  在myService_GetValuesCompleted,而不是你现在正在做的地方