簡體   English   中英

使用.NET Core而不是.NET Framework進行400 BadRequest響應

[英]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 1

我想保留.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM