如何在global.asax中获取当前网站的IP地址?

时间:2010-11-16 09:38:41

标签: asp.net

我想在Application_Start方法中执行此操作,因此如果站点在测试服务器上运行,我可以编写“robots.txt”文件。

由于

3 个答案:

答案 0 :(得分:1)

我最初认为是旧学校,使用ServerVariables collection,因为以下在我的测试应用程序中运行良好,但在内置的VS Web服务器下运行:

void Application_Start(object sender, EventArgs e) {
  // Code that runs on application startup
  string localAddress = Context.Request.ServerVariables["LOCAL_ADDR"];
  // Returns "::1" when running under the VS server, however it throws an 
  // exception under IIS Express, so I assume it also does so under IIS.
}

我能提出的下一个最佳选择是:

void Application_Start(object sender, EventArgs e) {
  // Code that runs on application startup
  string serverName = Server.MachineName;
}

哪个适用于VS和IIS express,所以如果你知道测试或实时服务器的名称,你可以检查一下吗?

答案 1 :(得分:1)

试试这个。

var ips = Dns.GetHostAddresses(Dns.GetHostName());
if (ips.Any())
{
    var serverIp = ips[ips.Count()-1];
}

由于本地或远程服务器,Dns.GetHostAddresses将返回不同的长度,

这就是为什么我使用ips.Count() - 1获得最少的一个。

答案 2 :(得分:0)

试试这个:

        HttpRequest httpRequest = HttpContext.Current.Request;
        string host = httpRequest.Headers["host"];
        IPAddress hostAddresse = Dns.GetHostAddresses("host").Where(a=>a.AddressFamily ==AddressFamily.InterNetwork).FirstOrDefault();