2011-09-07 96 views
0

Microsoft的HttpContext.Current.Request.ServerVariables [「REMOTE_ADDR」]正在爲遠程客戶端返回IPv6。但是,我需要將此數據用於ClientIP列爲varchar(15)的會話日誌記錄表中... IOW,因爲IPv6會引發字符串截斷錯誤,所以我需要IPv4客戶端IP地址。HttpContext.Current.Request.ServerVariables [「REMOTE_ADDR」]返回IPv6

這是可行的嗎?

+0

您無法單獨找到用戶的IPv4地址,而只是基於其IPv6地址。完全不可能。 (在極少數情況下(並且僅在非Windows操作系統上支持),當應用程序使用單個雙堆棧套接字綁定v4 + v6時,IPv6地址包含在類似':: ffff:1.2.3.4'的地址中,但是在你的情況下這是一個不太可能的情況 - 尤其是考慮到,就像我說的那樣,它在Windows上不受支持。) –

回答

2

不,客戶端的IPv4和IPv6地址是完全不相關的,所以當您通過IPv6連接時,您無法找到某人的IPv4地址。也許他們甚至沒有IPv4地址......或者至少不是唯一的IPv4地址。越來越多的ISP將開始在客戶之間共享IPv4地址,因爲他們沒有足夠的IPv4地址來爲每個用戶提供自己的IPv4地址。這也意味着,如果IPv4地址出自客戶共享的地址池,則用戶的IPv4地址可能會隨時間而改變。

你當然可以嘗試讓用戶通過IPv4連接。但就像我說的:不保證這會給你一些有用的東西。並且在(將來的)將來會變得更糟......

相關問題