Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在客户端捕获wcf服务引发的异常_C#_.net_Wcf - Fatal编程技术网

C# 如何在客户端捕获wcf服务引发的异常

C# 如何在客户端捕获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

在我的表单中,Load
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
添加到接口中的方法中。您还需要更新客户机中的服务,以便它知道需要它。