以下のような小さなコードがあります。
private string ResolveAddress(string domain)
{
try
{
if (Regex.IsMatch(domain, @"\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}"))
return domain;
else
return Dns.GetHostAddresses(domain)[0].ToString();
}
catch (Exception ex)
{
Error.Record("Exception caught in ResolveAddress", ex);
return domain;
}
}
今日、初めて私のホストに接続できないと不平を言う人がいます。ログを調べると、次の例外が表示されます。
# 6/20/2013 9:28:59 AM: Exception caught in ResolveAddress
Exception message: Configuration system failed to initialize
Exception stack trace: at System.Configuration.ConfigurationManager.PrepareConfigSystem()
at System.Configuration.ConfigurationManager.GetSection(String sectionName)
at System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName)
at System.Net.Configuration.SettingsSectionInternal.get_Section()
at System.Net.Sockets.Socket.InitializeSockets()
at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)
at System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
at NDTPresence.MainWindow.ResolveAddress(String domain)
明らかに、Dns.GetHostAddresses
呼び出しが失敗した場合、彼らは私のサービスに接続できません。私の質問は、なぜこれが起こっているのでしょうか? このホスト名が出力される構成ファイルは、ユーザーの AppData/Roaming にある場合に出てきますが、すべての人にインストールされています (私は信じています)。
ありがとう。