【问题标题】:How to catch wcf service thrown exception at client side如何在客户端捕获 wcf 服务引发的异常
【发布时间】: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。您还需要更新客户端中的服务,以便它知道期待它。

标签: c# .net wcf


【解决方案1】:

尝试设置 IncludeExceptionDetailInFaults 属性:

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多