Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF-重试不';不行?_C#_Wcf_Ws Reliablemessaging - Fatal编程技术网

C# WCF-重试不';不行?

C# WCF-重试不';不行?,c#,wcf,ws-reliablemessaging,C#,Wcf,Ws Reliablemessaging,我有以下绑定配置: <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"/> ..sna

我有以下绑定配置:

<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:49242信息启动流程
16:39:49588致命请求操作未在分配的超时00:02:00内完成


因此,应用程序会在2分钟内抛出一个错误,并且不会重试该请求。我应该怎么做才能让它开始重试?

WS-ReliableMessaging的WCF实现不是这样工作的。如果代理操作超时,则不会执行(进一步)重试。协议的重试逻辑适用于已传递到底层传输但未在RM层确认的消息,这些消息最终以和为边界

一旦您从代理通道接收到Exchange异常或TimeOutExtExchange,就可以考虑终止会话。此时,您将需要重新连接并重新开始(或者,如果您知道“停止”的位置并保存一些状态,您可能能够恢复,但此逻辑将由您负责实现)


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

Hmm,这不是我所希望的答案,而是希望在配置中完成这一切。