【问题标题】:How to get the server IP Address (in C# / asp.net)?如何获取服务器 IP 地址(在 C#/asp.net 中)?
【发布时间】:2010-11-23 15:49:15
【问题描述】:

有没有1行方法来获取服务器的IP地址?

谢谢

【问题讨论】:

  • 你的意思是“服务器” - ASP.Net 处理机器或服务器端防火墙/网关/代理
  • 您需要考虑到您的服务器可以分配多个 IP 地址。
  • stackoverflow.com/q/646525/292060 的可能重复项,即使这有更好的选择答案。
  • 我很想看看当你不得不依赖 HttpRequestMessage 对象而不是经典的 HttpRequest 时如何进行。
  • @SandRock - 您可以查看here,它会查找MS_HttpContext 属性,然后转换为HttpContextBase,这将允许访问ServerVariables 属性。根据您执行此操作的位置,您还可以直接获取 HttpContext 并将其查询为HttpContext.Current.Request.ServerVariables["LOCAL_ADDR"](抱歉回复晚了;))

标签: c# asp.net


【解决方案1】:
Request.ServerVariables["LOCAL_ADDR"];

来自docs

返回请求进入的服务器地址。这在计算机上可能有多个 IP 地址绑定到计算机上很重要,并且您想找出请求使用的地址。

这与与客户端计算机相关的远程地址不同。

【讨论】:

  • 是的,很多东西都隐藏在 ServerVariables 集合中。
  • 完美答案 - 从旧的 ASP 经典时代开始,我应该记得这个 :)
  • 小故障:从服务器上的浏览器访问服务器时,它解析为 127.0.0.1。否则,爱它。
  • @Allbite - 这可能取决于服务器上的 DNS 是如何配置的,或者您如何请求站点 - 例如,如果有一个 HOSTS 条目将域指向 127.0.0.1 以确保您浏览只是本地服务器(例如在负载平衡环境中),或者您将站点请求为 LocalHost,那么是的,您肯定会得到 127.0.0.1。我有其他网站通过正确的 DNS 查找报告了正确的浏览器 IP 地址。
  • 这显示了发送请求的服务器的地址,而不是托管网站的服务器
【解决方案2】:

我在网上搜索了以下代码:(我在那里找不到单行方法)

string myHost = System.Net.Dns.GetHostName();

// Show the hostname 

MessageBox.Show(myHost);

// Get the IP from the host name

string myIP = System.Net.Dns.GetHostEntry(myHost).AddressList[index].ToString();

// Show the IP 

MessageBox.Show(myIP);

-> 其中 index 是您的 IP 地址主机的索引(即网络连接)。

代码来自:http://www.geekpedia.com/tutorial149_Get-the-IP-address-in-a-Windows-application.html

【讨论】:

  • "其中 index 是您的 IP 地址主机的索引(即网络连接)。" - 这是什么意思?该链接不再有效
【解决方案3】:

正如其他人发布的那样,System.Net.Dns.GetHostEntry 是要走的路。当您访问 AddressList 属性时,您需要考虑 AddressFamily 属性,因为它可以返回 IPv4 和 IPv6 结果。

【讨论】:

    【解决方案4】:

    在您的 PC 上运行此代码时,此方法将返回您的机器公共 IP 地址,当您在服务器上部署应用程序时,将返回服务器 IP 地址。

    public static string Getpublicip()
        {
            try
            {
                string externalIP = "";
                var request = (HttpWebRequest)WebRequest.Create("http://icanhazip.com.ipaddress.com/");
                var response = (HttpWebResponse)request.GetResponse();
                var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
    
                externalIP = new WebClient().DownloadString("http://icanhazip.com");
                return externalIP;
    
            }
            catch (Exception e)
            {
    
                return "null";
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 2010-10-13
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 2011-03-27
      • 1970-01-01
      • 2016-05-10
      • 2015-02-23
      • 2013-01-28
      相关资源
      最近更新 更多