[英]Overriding BadRequest response in ASP.NET Core ResourceFilter
[英]400 BadRequest response with .NET Core but not .NET Framework
我有链接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 Bad Request。 我怀疑“#huong-vi-tinh-yeu”可能会导致问题,因为我收到200 OK而没有它们。 但是,当我在.NET Framework中再次测试它时,完整链接完全可以获得200 OK,没有出现任何问题。
我还测试了使用第三个库,例如.NET Core中的Flurl,RestSharp,但结果只有400个Bad Request。
网站上的另一个测试https://httpstatus.io仍然200 OK
我想保留.NET Core,因为我当前的Azure Function系统是通过.NET Core编写的。
那么问题是什么?
这是一个已知的错误。 我前段时间在Github存储库上报告了这个bug: [2.1]在某些服务器上的HTTP 400中,带有锚点的位置重定向失败#34728
看来这个bug是在.NET Core 2.1中引入的,并在.NET Core 3中修复。
作为临时解决方法,您可以在发出任何HTTP请求之前调用此方法,这将禁用错误代码:
AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.