【问题标题】:WPF client does not catch custom exception from WCFWPF 客户端不会从 WCF 捕获自定义异常
【发布时间】:2015-05-08 18:51:05
【问题描述】:

我有一个自定义异常,当客户端是控制台应用程序或表单应用程序时它可以正常工作,但如果客户端是 WPF 则不起作用。看,但我仍然没有找到答案,有什么想法吗?

我的基本自定义错误代码:

[DataContract]   
public class BookingException
{
    [DataMember]
    public string Messsage { get; set; }
    [DataMember]
    public string Description { get; set; }
}

服务接口代码:

[OperationContract]
[FaultContract(typeof(BookingException))]  
void InsertBooking(Booking booking);

服务代码:

public void InsertBooking(Booking booking)
{
    throw new FaultException<BookingException>(new BookingException());  
}

客户端代码:

 catch (FaultException<BookingException> ex)
 {
       //TODO
 }
 catch (Exception ex)
 {
       //TODO
 }

当客户端是控制台应用程序或表单应用程序时,这可以正常工作,但如果我将此客户端代码放入 WPF 应用程序中,则捕获始终是异常,而不是自定义异常。

【问题讨论】:

  • Exception ex 块中设置断点并确切地查看异常类型是什么。这几乎可以肯定是您的自定义异常,但在不同的命名空间中。这与您拥有 WPF 项目这一事实没有任何关系。这与您有一个 不同 项目以及您的项目设置不同或您以不同方式执行“添加服务引用”这一事实有关。例如,WPF 项目是一个新项目吗?那么也许您没有添加对其他项目中添加的共享程序集的引用。
  • @JohnSaunders 谢谢你的评论。我创建了一个新的 WPF 项目并且错误是相同的,但是如果我创建一个控制台应用程序可以正常工作。项目的命名空间在两者中是相同的,但仅适用于控制台应用程序。我没有发现差异......
  • @ErnodeWeerd 是同一个线程
  • 检查两个项目中使用的 .NET 版本。检查两个项目之间的程序集和项目引用列表。如果情况变得更糟,请将控制台项目具有但 WPF 项目没有的任何程序集添加到 WPF 项目(即使您不相信 WPF 项目需要这些程序集)。也许还可以创建一个新的控制台应用程序并为其提供 WPF 项目具有的所有相同程序集。让确定您在两个项目中使用确切相同的“添加服务引用”命令。
  • @JohnSaunders 在问这里之前,我做了这些测试。反正我会还给他们做的。感谢您的建议

标签: c# wpf wcf


【解决方案1】:

我用 cmets 帮助解决了我的问题。我有两个代理,一个在我的控制台应用程序中,另一个在我的 WPF 应用程序中,两个代理都使用相同的服务引用,但是两个代理都有不同的引用服务的方式,这个差异就是问题所在。 WPF not have any problems with custom erros。 感谢那些在他们的 cmets 上帮助我的人。

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多