【发布时间】: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 在问这里之前,我做了这些测试。反正我会还给他们做的。感谢您的建议