本地网络上的 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 以获取正确的地址。