ReliableSession.InactivityTimeout 属性

定义

获取或设置服务在关闭之前保持非活动状态的时间间隔。

public:
 property TimeSpan InactivityTimeout { TimeSpan get(); void set(TimeSpan value); };
public TimeSpan InactivityTimeout { get; set; }
member this.InactivityTimeout : TimeSpan with get, set
Public Property InactivityTimeout As TimeSpan

属性值

TimeSpan

TimeSpan,指定服务在关闭之前保持非活动状态的时间间隔。 默认值为 10 分钟。

例外

设置的值小于或等于零。

示例

// Create a new reliable session object
ReliableSessionBindingElement bindingElement = new ReliableSessionBindingElement();
ReliableSession reliableSession = new ReliableSession(bindingElement);

// Now you can access property values
Console.WriteLine("Ordered: {0}", reliableSession.Ordered);
Console.WriteLine("InactivityTimeout: {0}", reliableSession.InactivityTimeout);
' Create a new reliable session object
Dim bindingElement As ReliableSessionBindingElement = New ReliableSessionBindingElement()
Dim reliableSession As ReliableSession = New ReliableSession(bindingElement)

' Now you can access property values
Console.WriteLine("Ordered: {0}", reliableSession.Ordered)
Console.WriteLine("InactivityTimeout: {0}", reliableSession.InactivityTimeout)

注解

该属性会获取和设置 InactivityTimeout 属性的值。

通道上的活动被定义为接收应用程序或基础结构消息。 非活动超时属性会控制保持非活动会话存在的最长时间。 如果超过 InactivityTimeout 指定的时间间隔后仍没有活动,则基础结构会中止会话,且通道会出错。 可靠会话会遭到单方面撤销。

如果发送应用程序没有要发送的消息,则可靠会话通常不会因处于非活动状态而出错,“保持活动状态”机制会让会话无限期地处于活动状态。 请注意,如果未发送或接收任何应用程序消息,则调度程序可以单独中止可靠会话。 因此,如果网络状况为未收到任何类型的消息或发送方失败,则非活动超时通常会过期。

设置此超时可防止服务器在客户端关闭安全会话之前一直保持该会话。 如果安全会话在非活动时间间隔内未收到消息,则服务器会将其关闭。 这样可降低发生拒绝服务攻击的可能性。

使用可靠会话时,必须同时满足两个不同的非活动计时器,才能使连接处于活动状态。 如果任一非活动计时器结束计时,则将断开连接。

  • 第一个非活动计时器为可靠会话计时器,称为 InactivityTimeout。 如果在超时期限内没有收到任何应用程序消息或基础结构消息,此非活动计时器将激发。 基础结构消息是指为了通道堆栈中的协议之一(例如,保持活动状态或确认,而并非包含应用程序数据)而生成的消息。

  • 第二个非活动计时器为服务计时器,它使用绑定的 ReceiveTimeout 设置。 如果在超时期限内没有收到任何应用程序消息,此非活动计时器将激发。

由于任一非活动计时器激发都会断开连接,因此单纯增大 InactivityTimeout(当其大于 ReceiveTimeout 时)不起任何作用。 这两个超时时间的默认值均为 10 分钟,因此在使用可靠会话时,必须同时增大这两个超时时间才会起作用。

适用于