【发布时间】:2013-11-26 09:58:37
【问题描述】:
在我的 Form_Load background_worker_DoWork 内部,我使用 wcf 服务调用来获取 countAllBooksValue。在服务中,我抛出了错误异常,该异常应该被客户端捕获,但它没有。
客户端
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
try
{
int countAllBooks = BookAgent.CountAllBooks();
e.Result = countAllBooks;
}
catch (FaultException ex)
{
MessageBox.Show(ex.Message);
}
}
服务端
public int CountAllBooks()
{
throw new FaultException("Something bad happened!");
}
问题是:为什么这个 FaultException 没有被客户端捕获?
【问题讨论】:
-
BackgroundWorker_DoWork 不是 UI 线程,我实际上认为它可能被捕获,只是没有显示 - 你尝试过调试吗?
-
刚刚试了调试,catch块完全没有命中,服务端抛出异常,没有回发给客户端
-
您是否在合同中添加了
FaultContract属性? -
我在服务端添加了配置文件
-
不行,你需要在你接口的方法中添加
FaultContract。您还需要更新客户端中的服务,以便它知道期待它。