2010-12-02 105 views
1

我从WP7应用程序使用WCF服务。两者都在一个VS解决方案中。一切工作正常,直到我试图传回一个FaultException。使用FaultException的未处理异常<T>与WCF和WP7应用程序

当从我的WCF服务抛出的FaultException,我收到“类型的未处理的异常‘System.ServiceModel.FaultException`1’发生在System.ServiceModel.dll”在EndInvoke会在我的代理消息。如果我继续下去,这个例外不会冒出来。我的处理程序代码从未被击中。

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

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

接口码 -

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

异常类型 -

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

Server代码抛出异常 -

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))); 

从 “添加服务引用” 菜单生成的代理代码的代码不变项目。

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

回答

3

我相信你应该赶在myService_GetValuesCompletedFaultException<NotAuthorizedException> ,而不是你在哪里做,现在

+0

愚蠢的我,做到了!不习惯异步调用服务。谢谢! – 2010-12-02 16:52:22

相关问题