本地网络上的 Xamarin HttpClient 请求出现 NameResolutionFailure 错误
Xamarin HttpClient request on Local network gets NameResolutionFailure error
需要向本地网络服务器发出请求。如果机器名已知,但 IP 地址未知。
string serverAddress = "mylocalserver";
System.Net.ServicePointManager.DnsRefreshTimeout = 0;
HttpClientHandler handler = new HttpClientHandler();
handler.UseDefaultCredentials = true;
HttpClient client = new HttpClient(handler);
var url = $"http://{serverAddress}/";
var response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
但它失败了
System.Net.Http.HttpRequestException: An error occurred while sending
the request ---> System.Net.WebException: Error: NameResolutionFailure
NameResolutionFailure
通常是 DNS 名称解析错误。
一般来说,如果您的服务器在一个域中(并且配置正确),您应该可以通过它的全名访问它:
yourlocalserver.yourdomain.local
如果您没有域,您也可以在本地系统中配置一个 "DNS override"。这与 OS 不同。例如,在 windows 中,它的 host
文件位于 %WINPATH%\System32\drivers\etc
.
第三,您可以在没有完全配置域的情况下在您的网络中使用 DNS。如果服务器在其中,您应该查询 DNS 以获取正确的地址。
需要向本地网络服务器发出请求。如果机器名已知,但 IP 地址未知。
string serverAddress = "mylocalserver";
System.Net.ServicePointManager.DnsRefreshTimeout = 0;
HttpClientHandler handler = new HttpClientHandler();
handler.UseDefaultCredentials = true;
HttpClient client = new HttpClient(handler);
var url = $"http://{serverAddress}/";
var response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
但它失败了
System.Net.Http.HttpRequestException: An error occurred while sending the request ---> System.Net.WebException: Error: NameResolutionFailure
NameResolutionFailure
通常是 DNS 名称解析错误。
一般来说,如果您的服务器在一个域中(并且配置正确),您应该可以通过它的全名访问它:
yourlocalserver.yourdomain.local
如果您没有域,您也可以在本地系统中配置一个 "DNS override"。这与 OS 不同。例如,在 windows 中,它的 host
文件位于 %WINPATH%\System32\drivers\etc
.
第三,您可以在没有完全配置域的情况下在您的网络中使用 DNS。如果服务器在其中,您应该查询 DNS 以获取正确的地址。