ServicePoint.ConnectionLeaseTimeout Propriedade

Definição

Obtém ou define o número de milissegundos após os quais uma ligação ativa ServicePoint é encerrada.

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

Valor de Propriedade

A Int32 que especifica o número de milissegundos em que uma ligação ativa ServicePoint permanece aberta. O valor padrão é -1, o que permite que uma ligação ativa ServicePoint permaneça ligada indefinidamente. Defina esta propriedade para 0 para forçar ServicePoint o encerramento das ligações após o serviço de um pedido.

Exceções

O valor especificado para uma operação de conjunto é um número negativo inferior a -1.

Exemplos

O seguinte exemplo de código define o valor desta propriedade.

using System;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;

namespace Examples.System.Net
{
    public class ServicePointExample
    {
        // Pass in the name of the Web page to retrieve.
        public static void Main(string[] args)
        {
            string page;
            if (args == null || args.Length == 0 || args[0].Length == 0)
            {
                page = "http://www.contoso.com/default.html";
            }
            else
            {
                page = args[0];
            }
            // Create the request.
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(page);
            // Get the service point that handles the request's socket connection.
            ServicePoint point = request.ServicePoint;
            // Set the receive buffer size on the underlying socket.
            point.ReceiveBufferSize = 2048;
            // Set the connection lease timeout to infinite.
            point.ConnectionLeaseTimeout = Timeout.Infinite;
            // Send the request.
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();
            StreamReader s = new StreamReader(responseStream);
            // Display the response.
            Console.WriteLine(s.ReadToEnd());
            s.Close();
            responseStream.Close();
            response.Close();
        }
    }
}
Imports System.Net
Imports System.Net.Sockets
Imports System.IO
Imports System.Threading

Public Class ServicePointExample

    ' Pass in the name of the Web page to retrieve.
    Public Shared Sub Main(ByVal args() As String)
        Dim page As String
        If args Is Nothing OrElse args.Length = 0 OrElse args(0).Length = 0 Then
            page = "http://www.contoso.com/default.html"
        Else
            page = args(0)
        End If

        Dim request As HttpWebRequest = CType(WebRequest.Create(page), HttpWebRequest)
        ' Get the service point that handles the request's socket connection.
        Dim point As ServicePoint = request.ServicePoint
        ' Set the receive buffer size on the underlying socket.
        point.ReceiveBufferSize = 2048
        ' Set the connection lease timeout to infinite.
        point.ConnectionLeaseTimeout = Timeout.Infinite
        ' Send the request.
        Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
        Dim responseStream As Stream = response.GetResponseStream()
        Dim s As New StreamReader(responseStream)
        ' Display the response.
        Console.WriteLine(s.ReadToEnd())
        responseStream.Close()
        response.Close()
    End Sub
End Class

Observações

Atenção

WebRequest, HttpWebRequest, ServicePoint, e WebClient são obsoletos, e não deves usá-los para novos desenvolvimentos. Utilize HttpClient em substituição.

Pode usar esta propriedade para garantir que as ligações ativas de um ServicePoint objeto não permaneçam abertas indefinidamente. Esta propriedade destina-se a cenários em que as ligações devem ser cortadas e restabelecidos periodicamente, como em cenários de balanceamento de carga.

Por defeito, quando KeepAlive é true para um pedido, a MaxIdleTime propriedade define o tempo limite para encerrar ServicePoint ligações devido à inatividade. Se tiver ServicePoint ligações ativas, MaxIdleTime não tem efeito e as ligações permanecem abertas indefinidamente.

Quando a ConnectionLeaseTimeout propriedade é definida para um valor diferente de -1, e após o tempo especificado decorrer, uma ligação ativa ServicePoint é encerrada após servir um pedido, definindo KeepAlive como false nesse pedido.

Definir este valor afeta todas as ligações geridas pelo ServicePoint objeto.

Note

Desde .NET 9, esta propriedade corresponde a SocketsHttpHandler.PooledConnectionLifetime. No entanto, os handlers não são reutilizados entre pedidos, por isso não tem qualquer impacto significativo.

Aplica-se a

Ver também