400 BadRequest ответ с .NET Core, но не .NET Framework - PullRequest
3 голосов
/ 19 июня 2019

У меня была ссылка 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 без каких-либо проблем.

Я также протестировал, используя 3-ю библиотеку, такую ​​как Flurl, RestSharp в .NET Core, но результаты только один с 400 Bad Request.

Еще одно тестирование на сайте https://httpstatus.io еще 200 ОК 1

Я хочу сохранить .NET Core, потому что моя текущая система функций Azure написана на .NET Core.

Так в чем же проблема?

1 Ответ

3 голосов
/ 19 июня 2019

Это известная ошибка.Я сообщил об этой ошибке некоторое время назад в репозитории Github: [2.1] Перенаправление с местоположением, имеющим якорь, не удается в HTTP 400 на некоторых серверах # 34728

Кажется, эта ошибка была введена в.NET Core 2.1 и исправлено в .NET Core 3.

В качестве временного обходного пути вы можете вызвать его перед выполнением HTTP-запросов, что приведет к отключению ошибочного кода:

AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);
...