【发布时间】:2021-12-14 01:33:55
【问题描述】:
var handler = new HttpClientHandler
{
AllowAutoRedirect = false,
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
UseCookies = true,
CookieContainer = new CookieContainer(),
UseProxy = false,
SslProtocols = SslProtocols.Tls12
};
using var client = new HttpClient(handler, true)
{
Timeout = TimeSpan.FromSeconds(15)
};
client.DefaultRequestHeaders.Add("Accept", "*/*");
client.DefaultRequestHeaders.Add("User-Agent", "API");
using var response = await client.PostAsync(websiteUrl, content, cancellationToken);
if (!response.IsSuccessStatusCode)
return string.empty
return await response.Content.ReadAsStringAsync();
上面的代码在我测试过的任何 Windows 10 机器上都可以正常工作,但在 Windows 7 上返回禁止的 403。
有人有什么想法吗?我已经在处理程序的初始化程序上尝试了 UseDefaultCredentials = true 但行为仍然相同。
content是一个简单的字符串json内容。
【问题讨论】:
-
什么版本的 .NET?你打的是同一个服务器吗?客户端和服务器上启用了哪些 TLS 协议(并且您在请求中使用 https)?提供此请求时服务器的日志是否可用,它们有帮助吗?我建议在工作和非工作机器上使用 Fiddler 和跟踪(尽管 UseProxy=false 可能会导致问题)。
标签: c# windows httpclient