![](/img/trans.png)
[英]How to get the client IP address in asp.net when user runs hosted IIS link
[英]IIS7 or ASP.NET is returning an odd client IP Address
在我的 ASP.NET 應用程序中,我這樣說是為了獲取客戶端 IP 地址:
string ipAddress = HttpContext.Current.Request.UserHostAddress;
這是我一直使用的正常、直接的方法,而且它似乎總是有效的。 大家都知道,上面的語句只是 REMOTE_ADDR 服務器變量的包裝。
很簡單,對吧? 好吧,在過去的幾天里,我注意到在我的本地開發機器上,它返回這個值:
"fe80::dde4:def3:7f1b:a582%10"
我不知道為什么。 我正在運行 Vista x64 並使用 IIS7 運行我的應用程序。 我確實啟用了 IPv4 和 IPv6,但通常會返回如下內容:
"1::"
我不知道為什么會這樣。 重啟解決不了任何問題。
編輯:
發生這種情況時,我正在使用 Chrome。
看起來它正在返回IPv6 。
::1
是 IPv6 的環回地址,它只是1::
的反轉字節順序。
我還應該注意,IPv6 中的fe80::/10
地址是自動配置 IP 地址(在 IPv4 中,這些地址是169.254.0.0/16
)。 例如,如果您在專用 LAN 上並且無法訪問 DHCP 服務器,Windows 將自動為您的以太網適配器分配一個自動配置 IP 地址。
僅供參考,您通常應該將私有 IP 地址分配給無法訪問 DHCP 服務器的適配器。
當您看到此問題時,您使用的是 FireFox 嗎? 默認情況下,如果可用,它將使用 IPv6。 我建議關閉它:
這也將加速本地開發和調試,因為啟用 IPv6 時 FF 有時會無緣無故掛起。
我推薦的另一個選項是禁用 IPv6。 除非您運行的是端到端的 IPv6,否則它現在沒有用處,而最終用戶 ISP 沒有。 只需打開連接上的連接屬性並取消選中“Internet 協議版本 6 (TCP/IPv6)”框。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.