我正在为办公室建立一个附加组件,我将在其中打开浏览器并导航到内部站点,该站点也通过dns公开,以便可以从网络/域外部访问它。
现在,为了访问此站点,我需要知道我是否在域网络内部或外部。如果我在里面,我需要通过内部ip访问,否则通过暴露的DNS地址。 这就是我问堆栈溢出的聪明人,如果你们中的任何人知道一种方法,看看计算机当前是否连接到的网络,确实是计算机/用户所属的域的网络?
我一直在关注Environment.UserDomainName和Domain.GetComputerDomain。这两个都可以帮助我找到域名,理论上(未经过测试,但希望它可以工作),但它们都没有帮助我找出当前网络是否是域网络。
非常感谢任何建设性的反馈!
修改 在某些时候,这个附加组件应该出售给不同的客户,所以我不能依赖于像特定方式看待IP这样简单的东西。 无论计算机连接到何种网络,解决方案都必须能够正常工作。
答案 0 :(得分:1)
如果您的网络为计算机提供唯一名称,则可以通过
检查计算机名称Dns.GetHostName();
或者,如果您的网络具有特定唯一的IP标头(所有IP都以10.1开头,或者它们都在Belkin路由器上,其IP以198.2开头),您可以使用
获取所有IP地址IPAddress[] addr = Dns.GetHostAddresses(Dns.GetHostName());
更新:
显示我公司网络的东西是它的DNS后缀。这对你有用吗?
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in adapters)
{
IPInterfaceProperties properties = adapter.GetIPProperties();
Console.WriteLine(adapter.Description);
Console.WriteLine(" DNS suffix................................. :{0}",
properties.DnsSuffix);
Console.WriteLine(" DNS enabled ............................. : {0}",
properties.IsDnsEnabled);
Console.WriteLine(" Dynamically configured DNS .............. : {0}",
properties.IsDynamicDnsEnabled);
}