J'utilise FlurlHttp et je souhaite désactiver AllowAutoRedirect pour certains appels d'API. Je sais How can I get System.Net.Http.HttpClient to not follow 302 redirects?Désactiver AutoRedirect dans FlurlClient
WebRequestHandler webRequestHandler = new WebRequestHandler();
webRequestHandler.AllowAutoRedirect = false;
HttpClient httpClient = new HttpClient(webRequestHandler);
// Send a request using GetAsync or PostAsync
Task<HttpResponseMessage> response = httpClient.GetAsync("http://www.google.com")
Mais pour Flurl je trouve que la manière similaire à décrit dans C# Flurl - Add WebRequestHandler to FlurlClient (je ne l'ai pas compilé encore le code ci-dessous, donc il peut avoir des erreurs)
public class HttpClientFactoryWithWebRequestHandler : DefaultHttpClientFactory
{
private readonly WebRequestHandler _webRequestHandler;
public HttpClientFactoryWithWebRequestHandler (WebRequestHandler webRequestHandler)
{
_webRequestHandler = webRequestHandler ;
}
public override HttpMessageHandler CreateMessageHandler()
{
var handler =_webRequestHandler ;
//Or var handler = new WebRequestHandler(_webRequestHandler);
return handler;
}
}
ensuite, je peux passer le réglage d'un nouveau FlurlClient:
WebRequestHandler webRequestHandler = new WebRequestHandler();
webRequestHandler.AllowAutoRedirect = false;
var fc = new FlurlClient(url)
.ConfigureClient(c => c.HttpClientFactory =
new HttpClientFactoryWithWebRequestHandler (webRequestHandler));
il semble plus compliqué que cela pourrait être. Est-ce la bonne façon de faire ou cela peut-il être fait plus simplement?
Est-il acceptable de désactiver les redirections sur tous les clients de l'application? –
@ToddMenier, Pour la tâche en cours c'est OK, car le client est un microservice fonctionnant comme un petit site MVC séparé –