我正在使用FlurlHttp,我想为某些API调用禁用AllowAutoRedirect。 我知道How can I get System.Net.Http.HttpClient to not follow 302 redirects?在FlurlClient中禁用AutoRedirect
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")
但Flurl我发现只有类似于 C# Flurl - Add WebRequestHandler to FlurlClient描述的方式(我还没有尚未下面的代码编译,所以它可能有一些错误)
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;
}
}
然后我可以通过一个新的FlurlClient的设置:
WebRequestHandler webRequestHandler = new WebRequestHandler();
webRequestHandler.AllowAutoRedirect = false;
var fc = new FlurlClient(url)
.ConfigureClient(c => c.HttpClientFactory =
new HttpClientFactoryWithWebRequestHandler (webRequestHandler));
它看起来更复杂,它可能是。这是正确的做法还是可以做得更简单?
可以在应用程序范围内的所有客户端上禁用重定向吗? –
@ToddMenier,对于当前任务没关系,因为客户端是作为单独的小MVC站点运行的微服务 –