如何获取服务器 IP 地址(在 C#/asp.net 中)?
Posted
技术标签:
【中文标题】如何获取服务器 IP 地址(在 C#/asp.net 中)?【英文标题】:How to get the server IP Address (in C# / asp.net)? 【发布时间】:2010-11-23 15:49:15 【问题描述】:有没有1行方法来获取服务器的IP地址?
谢谢
【问题讨论】:
你的意思是“服务器” - ASP.Net 处理机器或服务器端防火墙/网关/代理 您需要考虑到您的服务器可以分配多个 IP 地址。 ***.com/q/646525/292060 的可能重复项,即使这有更好的选择答案。 我很想看看当你不得不依赖HttpRequestMessage
对象而不是经典的 HttpRequest
时如何进行。
@SandRock - 您可以查看here,它会查找MS_HttpContext
属性,然后转换为HttpContextBase
,这将允许访问ServerVariables
属性。根据您执行此操作的位置,您还可以直接获取 HttpContext 并将其查询为HttpContext.Current.Request.ServerVariables["LOCAL_ADDR"]
(抱歉回复晚了;))
【参考方案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";
【讨论】:
以上是关于如何获取服务器 IP 地址(在 C#/asp.net 中)?的主要内容,如果未能解决你的问题,请参考以下文章
C# - 连接到 (RAS) *** 时如何获取 IP 地址