如何让System.Net.Http.HttpClient不遵循302重定向?

使用NuGet的HttpClient 。

该应用程序使用client.PostAsync()发送post。 我希望它不要遵循302重定向。

怎么样?

我想我可以按照这个答案中的描述设置AllowAutoRedirect

但是如何在PostAsync()调用中使用HttpWebRequest呢?

HttpClient构造函数的一个重载采用WebRequestHandler参数。 HttpClient类使用此WebRequestHandler发送请求。

WebRequestHandler类提供了一个名为AllowAutoRedirect的属性来配置重定向行为。 将此属性设置为false会指示HttpClient不遵循重定向响应。

这是一个小代码示例:

 WebRequestHandler webRequestHandler = new WebRequestHandler(); webRequestHandler.AllowAutoRedirect = false; HttpClient httpClient = new HttpClient(webRequestHandler); // Send a request using GetAsync or PostAsync Task response = httpClient.GetAsync("http://www.google.com"); 

添加汉斯的回答:

WebRequestHandler派生自HttpClientHandler,但添加的属性通常仅在完整的.NET上可用。 WebRequestHandler不包含在System.Net.Http DLL中,而是包含在System.Net.Http.WebRequest DLL中,因此您必须明确地将其作为引用包含在内以便查看它。 否则它不会出现。

如果你不想添加新的DLL,你可以弹出HttpClientHandler:

  HttpClientHandler clientHandler = new HttpClientHandler(); clientHandler.AllowAutoRedirect = false; 

参考: https : //blogs.msdn.microsoft.com/henrikn/2012/08/07/httpclient-httpclienthandler-and-webrequesthandler-explained/