ASP.NET 中 Request.UserHostAddress 返回 ::1,而非預期的 IPv4 如 127.0.0.1 或局域網 IP。
::1 是 IPv6 回環地址,等同於 IPv4 的 127.0.0.1。當瀏覽器與伺服器在**同一台機器**且系統啟用 IPv6 時,ASP.NET 優先解析為 IPv6 回環。
UserHostAddress 將顯示真實的 IPv4/IPv6 公網/局域網地址。hosts 文件禁用 IPv6 回環(不推薦)。string ip = Request.UserHostAddress;
if (ip == "::1") ip = "127.0.0.1"; // 本地測試轉換
// 或統一用 IPAddress.Parse(ip).MapToIPv4().ToString() 轉為 IPv4 格式
若部署在反向代理(Nginx/IIS ARR)後方,需讀取 X-Forwarded-For 標頭:
string ip = Request.Headers["X-Forwarded-For"] ?? Request.UserHostAddress;