[英]How to Get system IP (IPv4) address and convert to string using C# asp.net
在我的Web應用程序上,我正在使用以下功能來獲取系統IP
功能
public void SetHostid()
{
try
{
string ip = "";
string strHostName = "";
strHostName = System.Net.Dns.GetHostName();
IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(strHostName);
IPAddress[] addr = ipEntry.AddressList;
ip = addr[1].MapToIPv4().ToString();
HostId = ip;
HttpContext.Current.Session["Hostid"] = HostId;
}
catch (Exception ex)
{
Error_ManagerClass em = new Error_ManagerClass();
em.WriteError(ex);
}
}
由於IP位於變量addr的addr[ 1]
( addr[ 1]
)上,因此它可以完美地工作。
當我嘗試從不同的系統運行相同的解決方案時,問題就來了。 嘗試將IP轉換為字符串時,函數將引發錯誤( ip = addr[1].MapToIPv4().ToString();
),因為IP不在位置編號1中。
如何更改功能以在每台計算機上工作?
如果只想獲取IPv4,請使用以下代碼:
var addr = ipEntry.AddressList.Where(ip => ip.AddressFamily == AddressFamily.InterNetwork);
var firstInList = addr.First(); // get first
但是,當系統中有多個IP地址時,應考慮選擇哪個IP。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.