Udostępnij za pośrednictwem


ServicePoint.ConnectionLeaseTimeout Właściwość

Definicja

Pobiera lub ustawia liczbę milisekund, po których jest zamykane aktywne połączenie ServicePoint.

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

Wartość właściwości

Int32, który określa liczbę milisekund, które aktywne połączenie ServicePoint pozostaje otwarte. Wartość domyślna to -1, która umożliwia aktywne połączenie ServicePoint pozostawanie na stałe. Ustaw tę właściwość na 0, aby wymusić zamknięcie ServicePoint połączeń po obsłudze żądania.

Wyjątki

Wartość określona dla operacji zestawu jest liczbą ujemną mniejszą niż -1.

Przykłady

Poniższy przykład kodu ustawia wartość tej właściwości.

#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::Net::Sockets;
using namespace System::IO;
using namespace System::Threading;

namespace SystemNetExamples
{
    public ref class ServicePointExample
    {
    public:

        // Pass in the name of the Web page to retrieve.    
        static void PrintResponse(String^ page)
        {

            // Create the request.
            HttpWebRequest^ request;
            Uri^ uri;
            
 

            try
            {
                uri = gcnew Uri(page);
            }
            catch (UriFormatException^ ex) 
            {
                Console::WriteLine(ex->Message);
            }

            request = (HttpWebRequest^) WebRequest::Create(uri); 

            // 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^ streamReader = 
                gcnew StreamReader(responseStream);
            try
            {
                // Display the response.
                Console::WriteLine(streamReader->ReadToEnd());
                responseStream->Close();
                response->Close();
            }
            finally
            {
                streamReader->Close();
            }
        }
    };
}
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

Uwagi

Ostrożność

WebRequest, HttpWebRequest, ServicePointi WebClient są przestarzałe i nie należy ich używać do tworzenia nowych aplikacji. Zamiast tego użyj HttpClient.

Tej właściwości można użyć, aby upewnić się, że aktywne połączenia obiektu ServicePoint nie pozostają otwarte na czas nieokreślony. Ta właściwość jest przeznaczona dla scenariuszy, w których połączenia powinny być przerywane i okresowo ponownie wprowadzane, takie jak scenariusze równoważenia obciążenia.

Domyślnie, gdy KeepAlive jest true dla żądania, właściwość MaxIdleTime ustawia limit czasu zamknięcia połączeń ServicePoint z powodu braku aktywności. Jeśli ServicePoint ma aktywne połączenia, MaxIdleTime nie ma żadnego wpływu, a połączenia pozostają otwarte na czas nieokreślony.

Gdy właściwość ConnectionLeaseTimeout jest ustawiona na wartość inną niż -1, a po upływie określonego czasu aktywne połączenie ServicePoint jest zamykane po obsłudze żądania przez ustawienie KeepAlive na false w tym żądaniu.

Ustawienie tej wartości wpływa na wszystkie połączenia zarządzane przez obiekt ServicePoint.

Dotyczy

Zobacz też