Le message de demande a déjà été envoyé. Impossible d’envoyer le même message de requête plusieurs fois

Y at-il quelque chose de mal avec mon code ici? Je continue à avoir cette erreur:

System.InvalidOperationException: le message de demande a déjà été envoyé. Impossible d’envoyer le même message de requête plusieurs fois.

Mon HttpRequestMessage est à l’intérieur d’un Func, j’ai donc pensé recevoir une nouvelle requête chaque fois que je passais à func ().

public async Task GetAsync(HttpRequestMessage request) { return await RequestAsync(() => request); } public async Task RequestAsync(Func func) { var response = await ProcessRequestAsync(func); if (response.StatusCode == HttpStatusCode.Unauthorized) { WaitForSomeTime(); response = await ProcessRequestAsync(func); } return response; } private async Task ProcessRequestAsync(Func func) { var client = new HttpClient(); var response = await client.SendAsync(func()).ConfigureAwait(false); return response; } 

Vous appelez le même paramètre func deux fois:

 var response = await ProcessRequestAsync(func); //... response = await ProcessRequestAsync(func); 

Dans ce cas, func renvoie la même requête à chaque fois. Il n’en génère pas un nouveau chaque fois que vous l’appelez. Si vous avez vraiment besoin d’une demande différente à chaque fois, alors func doit renvoyer un nouveau message à chaque appel:

 var response = await GetAsync(() => new HttpRequestMessage()); // Create a real request. public async Task GetAsync(Func requestGenerator) { return await RequestAsync(() => requestGenerator()); }