C# 如何在客户端捕获wcf服务引发的异常
在我的表单中,LoadC# 如何在客户端捕获wcf服务引发的异常,c#,.net,wcf,C#,.net,Wcf,在我的表单中,Loadbackground\u worker\u DoWork从我使用wcf服务调用获取countAllBooksValue的地方开始。在服务中,我抛出错误异常,该异常应该被客户端捕获,但它没有 客户端 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { try { int countAll
background\u worker\u 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?尝试设置IncludeExceptionDetailInFaults属性:
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
BackgroundWorker_DoWork不是UI线程,我实际上认为它可能被捕获,只是没有显示-您尝试过调试吗?只是尝试过调试,捕获块根本没有被命中,异常在服务端抛出,并且不会发送回客户端您是否已将
FaultContract
属性添加到您的合同中?我在服务端的配置文件中添加了“否”,您需要将FaultContract
添加到接口中的方法中。您还需要更新客户机中的服务,以便它知道需要它。