簡體   English   中英

如何使用C#asp.net獲取系統IP(IPv4)地址並轉換為字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM