我有http://www.swensens.com.vn/#huong-vi-tinh-yeu链接,我需要通过请求并获取StatusCode来验证它是否仍在工作。
就这么简单
var client = new HttpClient();
var result = await client.GetAsync(@"http://www.swensens.com.vn/#huong-vi-tinh-yeu");
Console.Write(result.StatusCode);
当我使用.NET Core 2.1进行测试时,它收到400错误请求。我怀疑“#huong-vi-tinh-yeu”可能会引起问题,因为没有它们我收到了200 OK。但是,当我在.NET Framework中再次对其进行测试时,完整链接可以完美显示200 OK,而不会发生任何问题。
我还使用.NET Core中的Flurl,RestSharp等第3个库进行了测试,但结果只有一个带有400错误请求的库。
网站https://httpstatus.io上的另一项测试仍然可以进行200次
我想保留.NET Core,因为我当前的Azure Function系统是通过.NET Core编写的。
问题是什么?
答案 0 :(得分:3)
那是一个已知的错误。我前一段时间在Github存储库上报告了该错误:[2.1] Redirect with location having an anchor fails in a HTTP 400 on some servers #34728
此错误似乎是在.NET Core 2.1中引入的,并在.NET Core 3中已修复。
作为一种临时解决方法,您可以在发出任何HTTP请求之前调用此方法,这将禁用错误代码:
AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);