เครื่องแต่ละเครื่องบน Network มี Unique Identifier เหมือนกับที่คุณเขียนที่อยู่บนจดหมายเพื่อส่งทางไปรษณีย์ คอมพิวเตอร์ใช้ Unique Identifier เพื่อส่งข้อมูลไปยังคอมพิวเตอร์เฉพาะบน Network เครือข่ายส่วนใหญ่วันนี้ รวมถึงคอมพิวเตอร์ทั้งหมดบน Internet ใช้ TCP/IP Protocol เป็นมาตรฐานสำหรับการสื่อสารบน Network ใน TCP/IP Protocol Unique Identifier สำหรับคอมพิวเตอร์เรียกว่า IP Address
ใช้ HttpRequest.UserHostAddress Property
using System.Web.Mvc;
namespace DemoMvcApplication.Controllers {
public class HomeController : Controller {
public string Index() {
string ipAddress = Request.UserHostAddress;
return ipAddress;
}
}
}
ถ้าต้องการดึง IP Address นอกจาก Controller (ใน Class ธรรมดา) สามารถทำได้ดังนี้:
using System.Web;
namespace DemoMvcApplication.Helpers {
public static class DemoHelperClass {
public static string GetIPAddress() {
string ipAddress = HttpContext.Current.Request.UserHostAddress;
return ipAddress;
}
}
}
ใช้ ServerVariables
using System.Web.Mvc;
namespace DemoMvcApplication.Controllers {
public class HomeController : Controller {
public string Index() {
string ipAddress = Request.ServerVariables["REMOTE_ADDR"];
return ipAddress;
}
}
}
Output

เนื่องจากเรา Run แอปพลิเคชันใน Localhost IP Address สำหรับ Localhost คือ ::1 ชื่อ Localhost ปกติ Resolve ไปยัง IPv4 Loopback Address 127.0.0.1 และ IPv6 Loopback Address ::1
การจัดการ Proxy และ Load Balancer (สำคัญ)
ใน Production Environment ที่อยู่หลัง Proxy หรือ Load Balancer UserHostAddress และ REMOTE_ADDR อาจให้ IP ของ Proxy แทน IP จริงของ Client ควรตรวจสอบ Header X-Forwarded-For:
public static string GetClientIpAddress(HttpRequestBase request) {
// ตรวจสอบ X-Forwarded-For Header (สำหรับ Proxy/Load Balancer)
string ip = request.Headers["X-Forwarded-For"];
if (!string.IsNullOrEmpty(ip)) {
// X-Forwarded-For อาจมีหลาย IP (client, proxy1, proxy2) 取第一個
ip = ip.Split(',')[0].Trim();
} else {
// Fallback ไปที่ ServerVariables
ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"]
?? request.ServerVariables["REMOTE_ADDR"]
?? request.UserHostAddress;
}
return ip;
}
ใน ASP.NET Core
public class HomeController : Controller {
public IActionResult Index() {
// ใช้ HttpContext.Connection.RemoteIpAddress
var ipAddress = HttpContext.Connection.RemoteIpAddress?.ToString();
// หรือถ้าอยู่หลัง Proxy ต้องตั้งค่า ForwardedHeaders Middleware
// ใน Startup.ConfigureServices:
// services.Configure(options => {
// options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
// });
return Content($"Your IP: {ipAddress}");
}
}