首页 > 解决方案 > 在 .Net Core 2.1 及更高版本中获取 HttpStatusCode 504 ( DNS Name Not Found )

问题描述

我是用 创建简单的项目.netCore 2.0并用 发送HttpRequestHttpClient,效果很好。

但是,当我从.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;
    }

我希望httpResponsebo的输出HttpStatusCode.OK。但实际输出是HttpStatusCode.GatewayTimeout.

我发现:如果我在of 中运行API server( http://api.domain.com/) ,所有请求都运行良好。但是当我使用时,只有with有效,其他无效。IISwindows server 2012IISWindows 8HttpRequestASP.NET Core sdk 2.0

谁能帮我?

标签: iishttpclienthttp-status-code-504.net-core-2.1.net-core-3.0

解决方案


这个问题终于解决了。

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

我意识到当api server在时internet network,它运作良好。但是当api server在本地网络中使用时,由于proxy在我的网络中使用,所有请求都遇到错误504(除非请求使用 发送.netCore sdk 2.0)。

应该注意的是,我已将此行添加192.168.11.125 api.domain.comhostDirectory 中的文件中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用and ( .netCore sdk 2.1or .netCore sdk 2.2or )发送请求有什么区别.netCore sdk 3.0???!!!

祝你好运。


推荐阅读