簡體   English   中英

從C#中IPv6安全的IP字符串中刪除端口

[英]Removing the port from a IP string that is IPv6 safe in C#

對於在ASP.NET MVC上運行的rest API中發出請求的用戶,我需要沒有端口的IP。 看來獲取地址的方法是這些的組合:

HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
HttpContext.Current.Request.UserHostAddress;

哪個給我一個IP字符串:端口

IPV4很簡單,但從閱讀中我期望IPV6會給我這樣的東西:

[1fff:0:a88:85a3::ac1f]:8001

IPAddress.Parse可以使用端口處理IPv6,但不能處理帶有奇怪端口的IPv4。

我可以檢查字符串以查看它是什么類型的地址,但我覺得應該有更好的方法。

有任何想法嗎?

這是我的臨時版本

public string StripPortFromEndPoint(string endPoint)
{
    var splitList = endPoint.Split(':');
    if (splitList.Length > 2)
    {
        endPoint = IPAddress.Parse(endPoint).ToString();
    }
    else if (splitList.Length == 2)
    {
        endPoint = splitList[0];
    }
    else
    {
        throw new ParseException("No port separator found",0);
    }

    return endPoint;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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