在 .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 2012
的 IIS
中,所有请求都运行良好。
但是当我使用 Windows 8
的 IIS
时,只有 HttpRequest
和 ASP.NET Core sdk 2.0
有效,其他的无效。
谁能帮帮我?
这个问题终于解决了
此问题与 my network
中的 network and proxy
设置有关。
我意识到 api server
在 internet 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
) 发送请求有什么区别???!!!
祝你好运。
我用 .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 2012
的 IIS
中,所有请求都运行良好。
但是当我使用 Windows 8
的 IIS
时,只有 HttpRequest
和 ASP.NET Core sdk 2.0
有效,其他的无效。
谁能帮帮我?
这个问题终于解决了
此问题与 my network
中的 network and proxy
设置有关。
我意识到 api server
在 internet 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
) 发送请求有什么区别???!!!
祝你好运。