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