在 .Net Core 2.1 及更高版本中获取 HttpStatusCode 504(未找到 DNS 名称)

Get HttpStatusCode 504 ( DNS Name Not Found ) in .Net Core 2.1 and Upper Version

我用 .netCore 2.0 创建了一个简单的项目,然后用 HttpClient 发送了 HttpRequest,效果很好。

但是,当我从 .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/ ) 在 windows server 2012IIS 中,所有请求都运行良好。 但是当我使用 Windows 8IIS 时,只有 HttpRequestASP.NET Core sdk 2.0 有效,其他的无效。

谁能帮帮我?

这个问题终于解决了

此问题与 my network 中的 network and proxy 设置有关。

我意识到 api serverinternet network 时效果很好。但是当api server在本地网络中使用时,因为在我的网络中使用proxy,所有 请求遇到错误 504(除非请求是使用 .netCore sdk 2.0 发送的)。

请注意,我已将此行 192.168.11.125 api.domain.com 添加到目录 c:\windows\system32\drivers\etc\hosts 中的 host 文件中。 而且,我添加了 Follow Exceptions: 192.168.11.125 api.domain.com 来自路径:

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

但这不起作用。

当我在 Local Area Network (LAN) Settings 表格中选择 Use a proxy server for your lan ... 的支票时,所有请求都运行良好。

当然,这个问题仍然存在,为什么 The same request 使用 .netcore sdk 2.0?

使用 .netCore sdk 2.0 和 (.netCore sdk 2.1.netCore sdk 2.2.netCore sdk 3.0) 发送请求有什么区别???!!!

祝你好运。