PolicyHttpMessageHandler Kelas

Definisi

DelegatingHandler Implementasi yang menjalankan pemrosesan permintaan yang dikelilingi oleh Policy.

public ref class PolicyHttpMessageHandler : System::Net::Http::DelegatingHandler
public class PolicyHttpMessageHandler : System.Net.Http.DelegatingHandler
type PolicyHttpMessageHandler = class
    inherit DelegatingHandler
Public Class PolicyHttpMessageHandler
Inherits DelegatingHandler
Warisan
PolicyHttpMessageHandler

Keterangan

Implementasi handler pesan ini mendukung penggunaan kebijakan yang disediakan oleh pustaka Polly untuk penanganan kesalahan sementara dan ketahanan.

Dokumentasi yang disediakan di sini adalah panduan terfokus untuk menggunakan Polly bersama dengan IHttpClientFactory. Untuk informasi otoritatif tentang Polly, lihat proyek Polly dan dokumentasinya (https://github.com/app-vnext/Polly).

Metode ekstensi pada PollyHttpClientBuilderExtensions dirancang sebagai cara yang nyaman dan benar untuk membuat PolicyHttpMessageHandler.

Metode ini AddPolicyHandler(IHttpClientBuilder, IAsyncPolicy<HttpResponseMessage>) mendukung pembuatan PolicyHttpMessageHandler untuk segala jenis kebijakan. Ini termasuk kebijakan non-reaktif, seperti Waktu Habis atau Cache, yang tidak mengharuskan permintaan yang mendasar gagal terlebih dahulu.

PolicyHttpMessageHandler PollyHttpClientBuilderExtensions dan metode kenyamanan hanya menerima generik IAsyncPolicy`1. Instans kebijakan generik dapat dibuat dengan menggunakan metode Policy generik seperti TimeoutAsync``1(System.Int32).

Untuk mengadaptasi non-generik IAsyncPolicyyang ada, gunakan kode seperti berikut yang mengonversi non-generik IAsyncPolicy policy menjadi IAsyncPolicy`1:

policy.AsAsyncPolicy<HttpResponseMessage>()

Metode ini AddTransientHttpErrorPolicy(IHttpClientBuilder, Func<PolicyBuilder<HttpResponseMessage>,IAsyncPolicy<HttpResponseMessage>>) adalah metode kenyamanan berpendapat yang mendukung penerapan kebijakan untuk permintaan yang gagal karena kegagalan koneksi atau kesalahan server (kode status HTTP 5XX). Metode semacam ini hanya mendukung kebijakan reaktif seperti Coba Lagi, Circuit-Breaker, atau Fallback. Metode ini hanya disediakan untuk kenyamanan; sebaiknya buat kebijakan Anda sendiri sesuai kebutuhan jika ini tidak memenuhi kebutuhan Anda.

Berhati-hatilah saat menggunakan kebijakan seperti Coba Lagi atau Waktu Habis bersama-sama karena HttpClient menyediakan batas waktunya sendiri melalui Timeout. Saat menggabungkan Coba Lagi dan Waktu Habis, Timeout akan bertindak sebagai batas waktu di semua percobaan; kebijakan Batas Waktu Polly dapat dikonfigurasi setelah kebijakan Coba Lagi dalam urutan konfigurasi, untuk memberikan batas waktu per percobaan.

Semua kebijakan yang disediakan oleh Polly dirancang agar efisien ketika digunakan dengan cara yang berumur panjang. Kebijakan tertentu seperti Bulkhead dan Circuit-Breaker mempertahankan status dan harus dicakup di seluruh panggilan yang ingin Anda bagikan Bulkhead atau status Circuit-Breaker. Berhati-hatilah untuk memastikan masa pakai yang benar saat menggunakan kebijakan dan penangan pesan bersama-sama dalam skenario kustom. Metode ekstensi yang disediakan oleh PollyHttpClientBuilderExtensions dirancang untuk menetapkan masa pakai yang lama untuk kebijakan dan memastikan bahwa metode tersebut dapat digunakan saat fitur rotasi handler aktif.

melampirkan PolicyHttpMessageHandler konteks ke HttpRequestMessage sebelum menjalankan Policy, jika belum ada. Context disediakan untuk kebijakan untuk digunakan di dalam Policy dan di penangan pesan lainnya.

Konstruktor

Nama Deskripsi
PolicyHttpMessageHandler(Func<HttpRequestMessage,IAsyncPolicy<HttpResponseMessage>>)

Membuat baru PolicyHttpMessageHandler.

PolicyHttpMessageHandler(IAsyncPolicy<HttpResponseMessage>)

Membuat baru PolicyHttpMessageHandler.

Metode

Nama Deskripsi
SendAsync(HttpRequestMessage, CancellationToken)

Mengirim permintaan HTTP ke handler dalam untuk dikirim ke server sebagai operasi asinkron.

SendCoreAsync(HttpRequestMessage, Context, CancellationToken)

Dipanggil di dalam eksekusi Policy untuk melakukan pemrosesan permintaan.

Berlaku untuk