【问题标题】:Asp.NET Get current domainAsp.NET 获取当前域
【发布时间】:2011-05-24 18:37:01
【问题描述】:

如果我有一个在 www.example.com 运行的网站,但有人通过 IP 地址访问它。如何在 IIS 中查找 www.example.com 是实际站点的域的代码?

【问题讨论】:

  • 一个 ASP.NET 应用程序对它所在的容器的配置一无所知。要访问 IIS 配置,您的 ASP.NET 应用程序需要以提升的权限运行,这是一个巨大的禁忌,更不用说错误的方式去做你想做的事了。您应该做的是重定向通过其规范名称以外的任何其他方式访问该站点的任何请求。那么你就不用担心这个了。请详细说明您认为有必要这样做的原因。
  • 你必须更具体。你说的是“如果有人说“嘿你”,我怎么知道我的名字?你当然知道你的名字,你的网站也应该知道它的名字。你的问题表面上没有多大意义,除非你还有什么没说的。
  • 是的,我就是这么想的。这是一个许可问题,允许通过域名访问站点,但如果有人通过 IP 地址访问该站点,则无法找到域名,因此许可失败。
  • 在这种情况下,客户有责任确保所有请求都经过规范化或为其他域购买单独的许可证。 SiteFinity(我相信还有很多其他的)使用按域许可模型,同样的问题也适用于他们的东西。

标签: .net asp.net dns


【解决方案1】:

不可能可靠地根据 IP 地址查找域,因为 IP 地址可以映射到 0 个或多个域名。

您能做的最好的事情就是拥有一个映射列表。请注意,本地网络 IP 地址和外部 IP 地址也可能指向同一位置。

一般来说,一台特定的机器可以被多个IP引用,每个IP又可以被多个域引用。所以你可以去domain > IP address -> machine,但不能反过来。

【讨论】:

  • 我认为您的意思是不可能“可靠地”查找基于 IP 的域。这当然是可能的,但它可能不是正确的域名,而且大多数网站无论如何都没有正确的反向 dns 记录。
  • 不正确...我已经发布了如何做到这一点,尽管它可能不是 100%。
【解决方案2】:

您是否要获取www.example.com 的IP 以便进行比较?

您可以通过以下方式获得www.example.com的IP:

 System.Net.Dns.GetHostEntry("www.example.com").AddressList[0].ToString();

然后您可以比较 IP 以查看它们是否相同。另请注意,有一个列表,您可以检查它是否存在:

bool ipMatch = (System.Net.Dns.GetHostEntry("www.example.com").
    AddressList.Where(a => a.ToString().Equals(userIP)).Count() > 0);

你可以使用Contains,但是你必须建立一个你可能没有的IPAddress对象。

编辑:从您的评论中,您有 IP 并且想要主机地址,所以这样做:

string hostname = System.Net.Dns.GetHostEntry(yourIPHere).HostName;

【讨论】:

  • 如果当用户通过 ip 访问站点时我从 asp.net 获取当前域,我会得到 ipaddress,但我想要的是实际域名。所以如果我得到22.23.24.25/Default.aspx,我想知道它真的是bob.com/Default.aspx
  • 为什么还要查看主机名?您应该已经知道您是 bob.com。唯一不会的情况是它是用户可配置的域名,例如 CMS 或其他通用应用程序,在这种情况下,您需要一些配置条目来告诉它您的名称。
  • @Mystere Man 我学会了从不问为什么......每个人似乎都有理由去做几乎任何事情;)
  • +1 不知道System.Net.Dns.GetHostEntry。虽然它不会在所有情况下都有效。例如,74.125.225.80 是 Google(或至少是 Google 的 IP 之一),但 GetHostEntry 没有找到它。
  • 也不适用于 microsoft.com (207.46.197.32),它实际上抛出了一个 SocketException“没有这样的主机是已知的”。不过,它适用于我们公司的网站地址。
猜你喜欢
  • 2014-11-29
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
相关资源
最近更新 更多