Получите HttpStatusCode 504 (DNS-имя не найдено) в .Net Core 2.1 и более поздних версиях - PullRequest
0 голосов
/ 23 апреля 2019

Я создал простой проект с .netCore 2.0 и отправил HttpRequest с HttpClient, который работает хорошо.

Но при переходе с .netCore 2.0 на верхнюю версию (например, .NetCore 2.1 или .netCore 3.0) этот код не работает.

Мой код:

public async Task<bool> IsValid()
    {
        string url = "http://api.domain.com/...";
        var values = new Dictionary<string, string>()
            {
               { "param1", "value1" },
               { "param2", "value2" }
            };

        HttpClient client = new HttpClient();

        var content = new FormUrlEncodedContent(values);
        var post = await client.PostAsync(url, content);
        if (post.StatusCode == System.Net.HttpStatusCode.OK)
        {
            return true;
        }
        return false;
    }

Я ожидаю, что на выходе httpResponse будет bo HttpStatusCode.OK. но фактический результат составляет HttpStatusCode.GatewayTimeout.

Я обнаружил, что: Если я запускаю API server (http://api.domain.com/) в IIS из windows server 2012, все запросы работают хорошо. Но когда я использую IIS из Windows 8, только HttpRequest с ASP.NET Core sdk 2.0 работает, а другие не работают.

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 05 мая 2019

Эта проблема наконец-то решена.

Эта проблема была связана с настройками network and proxy в my network.

Я понимаю, когда api server будет в internet network, этоработает хорошо.но когда api server будет использоваться в локальной сети, из-за использования proxy в моей сети все запросы встречались с ошибкой 504 (если только запрос не отправлялся с .netCore sdk 2.0).

Следует отметить, что я добавил эту строку 192.168.11.125 api.domain.com в host файл в каталоге c:\windows\system32\drivers\etc\hosts.а также я добавил следующие исключения: 192.168.11.125 api.domain.com из пути:

Control Panel > Network and Internet > Internet Option > Connections Tab > Lan Settings > Advanced > Exceptions panel

Но это не работает.

Когда я взял чек Use a proxy server for your lan ... в Local Area Network (LAN) Settings форме все запросы работают хорошо.

Конечно, остается вопрос, почему The same request работает с .netcore sdk 2.0?

В чем разница между отправкой запросас .netCore sdk 2.0 и (.netCore sdk 2.1 или .netCore sdk 2.2 или .netCore sdk 3.0) ??? !!!

Удачи.

...