繁体   English   中英

WCF-重试不起作用?

[英]WCF - retry doesn't work?

我的绑定具有以下配置:

<binding name="wshttp" openTimeout="00:01:00" sendTimeout="00:02:00" receiveTimeout="00:03:00" closeTimeout="00:04:00">
     ..snap
     <reliableSession inactivityTimeout="00:05:00" maxRetryCount="8" ordered="true"/>
     ..snap
</binding>

我的期望是,当客户端代理在2分钟内发送失败时,应重试该请求。 然而:

16:37:49,242 信息开始过程
16:39:49,588 致命在指定的00:02:00超时内,请求操作未完成

因此,应用程序会在2分钟内引发错误,并且不会重试该请求。 我应该怎么做才能使其开始重试?

WS-ReliableMessaging的WCF实现无法以这种方式工作。 如果代理操作超时,将不执行(更多)重试。 协议的重试逻辑适用于已传递到基础传输但尚未在RM层确认的消息,该消息最终受MaxRetryCountInactivityTimeout限制

一旦从代理通道收到CommunicationException或TimeoutException,就可以认为会话已终止。 在这一点上,您将需要重新连接并重新开始(或者,如果您知道您在哪里“离开”并保存了一些状态,则可能可以恢复-但这是您实现的逻辑)。

基本上,您应该传递一个超时值,该值代表您愿意等待通信操作完成的最长持续时间。 如果失败,则必须Abort()并重新开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM