WPF客户端中忽略WCF异常

时间:2015-03-07 19:53:04

标签: .net wpf wcf exception-handling faultexception

我在Windows服务中托管了一个WCF服务库。我花了一整天的时间测试了很多场景并取得了很大成功但是,正如应用程序现在一样,我遇到了未被捕获的异常问题,我的FaultException<ExceptionFault>只是被WCF服务记录,然后消失了。 ExceptionFault是一个简单的DataContract模型,只有三个字符串值,其中包含描述异常的数据。

WCF服务使用计时器每30秒调用以下方法:

public int Process(bool isForced)
{
    try
    {
        var count = ProcessListings();
        return count;
    }
    catch (Exception ex)
    {
        _logger.ErrorWithCallStack("Error while processing listings. " + ex.GetType().Name + ": " + ex.Message, ex, ex.StackTrace);
        if (ex is SchedulerException)
        {
            throw new FaultException<ExceptionFault>(new ExceptionFault(ex), ex.Message);
        }
        throw;
    }
}

private static int ProcessListings()
{
    if (processCount % 3 == 0)
    {
        throw new SchedulerException("ProcessListings failed.");
    }
    return 0;
}

客户端是WPF应用程序中的视图模型。它有一个命令来覆盖计时器并通过调用WCF代理的Process方法强制执行ProcessAsync。当我使用它时,客户端捕获FaultException<ExceptionFault>并正确显示对话。当服务本身执行Process方法时,一个计时器的Elapsed事件,抛出相同的异常(每三次一次),但是虽然这个异常没有在任何地方处理,但服务只是忽略它并处理下次定时器点火时再次出现。

我知道计时器事件中的异常被吞下,但在这种情况下我根本不知道还能做什么。我在客户端处理四个未处理异常的情况,如果我将计时器移动到Windows服务中,并在那里捕获未处理的异常,它将如何发送回WPF客户端?

0 个答案:

没有答案