.NET Core而不是.NET Framework的400 BadRequest响应

时间:2019-06-19 07:28:15

标签: c# .net-core httprequest .net-4.5 .net-core-2.1

我有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次 1

我想保留.NET Core,因为我当前的Azure Function系统是通过.NET Core编写的。

问题是什么?

1 个答案:

答案 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);