在过去的几天里,我们在解析主机名时遇到了一些问题。
我们创建了一个非常简单的 .aspx 页面来尝试解析google.com
,有时候我们会收到正确的 IP,但其他时候我们会收到此错误:
System.Net.Sockets.SocketException(0x80004005):在 System.Net.Dns.InternalGetHostByName(String hostName,Boolean includeIPv6)处在 System.Net.Dns.Resolve(String hostName)处在 ASP._diagnostics_dns_aspx.HostName2IP(String hostname)处在 ASP._diagnostics_dns_aspx.Resolve(Object sender,EventArgs e)处没有发现这样的主机
解析内部 Azure 主机名(*.cloudapp.azure.com)或其他主机名(microsoft.com,...)时会出现同样的问题。
我们怀疑应用程序托管的其中一个实例(我们目前有 2 个实例)的 DNS 解析出现故障。
您可以在此处看到完整的 aspx 页面代码:https://gist.github.com/davideicardi/6d3f5bf45efaeea0e2a03cba58beec5f
但基本上它使用以下代码来解析请求的主机名:
private string HostName2IP(string hostname)
{
var iphost = System.Net.Dns.GetHostEntry(hostname);
var addresses = iphost.AddressList;
var addressList = new System.Text.StringBuilder( );
foreach(var address in addresses)
{
addressList.Append("IP Address: ");
addressList.Append(address.ToString( ));
addressList.Append(";");
}
return addressList.ToString( );
}
有什么想法吗?可能是我们破坏了某些配置,或者 Azure 存在问题?
更新:如果我在 Kudu PowerShell 控制台中使用[System.Net.Dns]::GetHostEntry("google.com")
或使用,nslookup
名称始终会得到解析。这似乎只是与我的网站相关的问题。我在两个实例上都尝试过了。
答案1
我有一张 MS 的未结票据,似乎可以证实这是 Azure 方面的错误。