SocketsHttpHandler.ConnectCallback Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan atau mengatur panggilan balik kustom yang digunakan untuk membuka koneksi baru.
public:
property Func<System::Net::Http::SocketsHttpConnectionContext ^, System::Threading::CancellationToken, System::Threading::Tasks::ValueTask<System::IO::Stream ^>> ^ ConnectCallback { Func<System::Net::Http::SocketsHttpConnectionContext ^, System::Threading::CancellationToken, System::Threading::Tasks::ValueTask<System::IO::Stream ^>> ^ get(); void set(Func<System::Net::Http::SocketsHttpConnectionContext ^, System::Threading::CancellationToken, System::Threading::Tasks::ValueTask<System::IO::Stream ^>> ^ value); };
public Func<System.Net.Http.SocketsHttpConnectionContext,System.Threading.CancellationToken,System.Threading.Tasks.ValueTask<System.IO.Stream>>? ConnectCallback { get; set; }
member this.ConnectCallback : Func<System.Net.Http.SocketsHttpConnectionContext, System.Threading.CancellationToken, System.Threading.Tasks.ValueTask<System.IO.Stream>> with get, set
Public Property ConnectCallback As Func(Of SocketsHttpConnectionContext, CancellationToken, ValueTask(Of Stream))
Nilai Properti
Metode panggilan balik untuk membuat aliran.
Pengecualian
Operasi telah dimulai pada instans saat ini.
Instans saat ini telah dibuang.
Contoh
Contoh kode berikut menetapkan TCP KeepAlive pada Socket.
static async Task Main()
{
using SocketsHttpHandler handler = new SocketsHttpHandler();
handler.ConnectCallback = async (ctx, ct) =>
{
DnsEndPoint dnsEndPoint = ctx.DnsEndPoint;
IPAddress[] addresses = await Dns.GetHostAddressesAsync(dnsEndPoint.Host, dnsEndPoint.AddressFamily, ct);
var s = new Socket(SocketType.Stream, ProtocolType.Tcp) { NoDelay = true };
try
{
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
s.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.TcpKeepAliveTime, 5);
s.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.TcpKeepAliveInterval, 5);
s.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.TcpKeepAliveRetryCount, 5);
await s.ConnectAsync(addresses, dnsEndPoint.Port, ct);
return new NetworkStream(s, ownsSocket: true);
}
catch
{
s.Dispose();
throw;
}
};
// Create an HttpClient object
using HttpClient client = new HttpClient(handler);
// Call asynchronous network methods in a try/catch block to handle exceptions
try
{
HttpResponseMessage response = await client.GetAsync("https://learn.microsoft.com/");
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine($"Read {responseBody.Length} characters");
}
catch (HttpRequestException e)
{
Console.WriteLine("\nException Caught!");
Console.WriteLine($"Message: {e.Message} ");
}
}