PolicyHttpMessageHandler Classe

Definizione

Implementazione DelegatingHandler che esegue l'elaborazione delle richieste circondata da un oggetto 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
Ereditarietà
PolicyHttpMessageHandler

Commenti

Questa implementazione del gestore di messaggi supporta l'uso dei criteri forniti dalla libreria Polly per la gestione degli errori temporanei e la resilienza.

La documentazione fornita qui è incentrata sull'uso di Polly insieme a IHttpClientFactory. Per informazioni autorevoli su Polly, vedere il progetto Polly e la relativa documentazione (https://github.com/app-vnext/Polly).

I metodi di estensione in PollyHttpClientBuilderExtensions sono progettati come un modo pratico e corretto per creare un oggetto PolicyHttpMessageHandler.

Il AddPolicyHandler(IHttpClientBuilder, IAsyncPolicy<HttpResponseMessage>) metodo supporta la creazione di un oggetto PolicyHttpMessageHandler per qualsiasi tipo di criterio. Sono inclusi criteri non reattivi, ad esempio Timeout o Cache, che non richiedono che la richiesta sottostante non riesca per prima.

PolicyHttpMessageHandler e i PollyHttpClientBuilderExtensions metodi pratici accettano solo il generico IAsyncPolicy`1. È possibile creare istanze di criteri generici usando i metodi generici in Policy , ad esempio TimeoutAsync``1(System.Int32).

Per adattare un oggetto non generico IAsyncPolicyesistente, usare codice simile al seguente che converte un oggetto non generico IAsyncPolicy policy in IAsyncPolicy`1:

policy.AsAsyncPolicy<HttpResponseMessage>()

Il AddTransientHttpErrorPolicy(IHttpClientBuilder, Func<PolicyBuilder<HttpResponseMessage>,IAsyncPolicy<HttpResponseMessage>>) metodo è un metodo pratico di opinione che supporta l'applicazione di un criterio per le richieste che hanno esito negativo a causa di un errore di connessione o di un errore del server (codice di stato HTTP 5XX). Questo tipo di metodo supporta solo criteri reattivi, ad esempio Retry, Circuit-Breaker o Fallback. Questo metodo viene fornito solo per praticità; è consigliabile creare criteri personalizzati in base alle esigenze, se non soddisfano i requisiti.

Prestare attenzione quando si usano criteri come Retry o Timeout insieme come HttpClient fornisce il proprio timeout tramite Timeout. Quando si combinano tentativi e timeout, Timeout fungerà da timeout tra tutti i tentativi. È possibile configurare un criterio di timeout polly dopo un criterio di ripetizione dei tentativi nella sequenza di configurazione per fornire un timeout per tentativo.

Tutti i criteri forniti da Polly sono progettati per essere efficienti quando usati in modo di lunga durata. Alcuni criteri, ad esempio Bulkhead e Circuit-Breaker mantenere lo stato e devono essere definiti nell'ambito tra le chiamate che si desidera condividere lo stato Bulkhead o Circuit-Breaker. Prestare attenzione a garantire la durata corretta quando si usano criteri e gestori di messaggi insieme in scenari personalizzati. I metodi di estensione forniti da PollyHttpClientBuilderExtensions sono progettati per assegnare una durata prolungata ai criteri e assicurarsi che possano essere usati quando la funzionalità di rotazione del gestore è attiva.

PolicyHttpMessageHandler Associa un contesto all'oggetto prima dell'esecuzione HttpRequestMessage di un Policyoggetto , se non ne esiste già uno. Viene Context fornito al criterio per l'uso all'interno di Policy e in altri gestori di messaggi.

Costruttori

Nome Descrizione
PolicyHttpMessageHandler(Func<HttpRequestMessage,IAsyncPolicy<HttpResponseMessage>>)

Crea un nuovo PolicyHttpMessageHandleroggetto .

PolicyHttpMessageHandler(IAsyncPolicy<HttpResponseMessage>)

Crea un nuovo PolicyHttpMessageHandleroggetto .

Metodi

Nome Descrizione
SendAsync(HttpRequestMessage, CancellationToken)

Invia una richiesta HTTP al gestore interno per l'invio al server come operazione asincrona.

SendCoreAsync(HttpRequestMessage, Context, CancellationToken)

Chiamato all'interno dell'esecuzione di per eseguire l'elaborazione delle Policy richieste.

Si applica a