WCF TimeoutException和CommunicationException对方法执行有什么影响?

时间:2019-05-25 19:25:52

标签: wcf exception

我正在致电WCF服务,该服务将启动一批信用卡费用。如果发生异常,我想知道它是否在方法执行和实际收费之前发生。例如,对于TimeoutException,无法知道是否执行了WCF方法,因此我需要确保在调查情况之前不重试这些费用。但是,如果网络刚刚瘫痪,或者服务器证书过期,或者在该方法实际执行之前发生了其他任何事情,我都可以解锁记录,以便稍后在无需人工干预的情况下进行重试。

try
{
    var response = wcfClient.ProcessBatch(paymentBatch);
    wcfClient.Close();

    //...
}
catch(CommunicationException)
{
    //Safe to assume ProcessBatch did not execute?

    wcfClient.Abort();
}
catch(TimeoutException)
{
    //Indeterminate state. Have to assume operation may have succeeded server-side

    wcfClient.Abort();
}
catch(Exception)
{
    //Assuming operation may have succeeded server-side
}

这正在使用wsHttpBindingCommunicationException是否保证该方法没有执行,或者在响应过程中还会抛出该方法?

1 个答案:

答案 0 :(得分:0)

根据the CommunicationException documentation on MSDN,CommunicationException Exceptioon是错误的超类,分为两个子类别,均与SOAP数据报中的错误有关。

相反,TimeoutException非常简单:“为进程或操作分配的时间到期时引发的异常。”分配的时间可能是由服务的所有者设置的,您可能有也可能没有覆盖它的机制。

为便于将来参考,两次快速Bing搜索返回了本文引用的两篇文章。