提问人:xr280xr 提问时间:5/26/2019 更新时间:5/26/2019 访问量:126
WCF TimeoutException 与 CommunicationException 对方法执行有何影响?
What are the Implications of WCF TimeoutException vs CommunicationException on method execution?
问:
我正在调用一个 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
}
这是使用 .是否保证方法未执行,或者也可以在响应期间抛出该方法?wsHttpBinding
CommunicationException
答:
0赞
David A. Gray
5/26/2019
#1
根据 MSDN 上的 CommunicationException 文档,CommunicationException Exceptioon 是错误超类,分为两个子类别,这两个子类别都与 SOAP 数据报中的错误有关。
相反,TimeoutException 非常简单:“为进程或操作分配的时间已过期时引发的异常。分配的时间可能由服务的所有者设置,您可能有也可能没有覆盖它的机制。
为了将来参考,两次快速 Bing 搜索返回了此处引用的两篇文章。
评论
0赞
xr280xr
5/26/2019
“两个子类别”——你的意思是和吗?这是许多派生类型中的两种;我不知道类别。这些与这个问题有什么关系?我在这里没有找到这个问题的答案。为了公平比较,我发现这些文档也出现在简单的 google 和 duckduckgo 搜索中......FaultException
FaultException<TDetail>
评论