我正在使用WP7应用程序中的WCF服务。两者都在一个VS解决方案中。一切正常,直到我试图传回FaultException。
从我的WCF服务抛出FaultException时,我收到消息“EndInvoke中的System.ServiceModel.dll”中发生了'System.ServiceModel.FaultException`1'类型的未处理异常我的代理人。如果我点击继续,则异常不会冒出来。我的处理程序代码永远不会被命中。
我相信我已把所有东西都正确连接好了。我已经看过很多例子,因为我花了一整天的时间在网上搜索这个问题的帮助。如果我停止抛出FaultException,我的应用程序工作正常。
在VS Debug>中例外对话框,我已经尝试在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; }
}
抛出异常的服务器代码 -
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)));
代理代码是从“添加服务引用”菜单项生成的未更改代码。
它必须是简单的东西,但我只是没有看到它!
答案 0 :(得分:3)
我相信你应该抓住FaultException<NotAuthorizedException>
在myService_GetValuesCompleted
,而不是你现在正在做的地方