In this article I will explain with an example, how to get Client IP Address of Visitor’s Machine in ASP.Net MVC Razor.
This article will explain how to get IP Address of Visitors (Client) Machines which don’t use Proxy Servers and also which are behind Proxy Servers.
Inside the Index Action method, first the IP Address is determined for the Client machine’s which are behind Routers or Proxy Servers and hence the HTTP_X_FORWARDED_FOR server variable is checked.
Note: When the Client machine is behind a Proxy Server its IP Address of the Proxy Server is appended to the Client machine’s IP Address. If there are multiple Proxy Servers then the IP Addresses of all the Proxy Servers are appended to the client machine IP Address.
If the IP Address is not found in the HTTP_X_FORWARDED_FOR server variable, it means that it is not using any Proxy Server and hence the IP Address is now checked in the REMOTE_ADDR server variable.
Note: While running this application on your machine locally i.e. in Visual Studio, the IP Address will show as or ::1. This happens because in such case the Client and Server both are the same machine. Thus no need to worry when you deploy it on a Server, you will see the results.
Finally the detected IP Address is set into a ViewBag object.
public class HomeController : Controller
    // GET: Home
    public ActionResult Index()
        string ipAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
        if (string.IsNullOrEmpty(ipAddress))
            ipAddress = Request.ServerVariables["REMOTE_ADDR"];
        ViewBag.IPAddress = ipAddress;
        return View();
Inside the following View, the ViewBag object is displayed.
    Layout = null;
<!DOCTYPE html>
    <meta name="viewport" content="width=device-width"/>
    <style type="text/css">
        body {
            font-family: Arial;
            font-size: 10pt;
        Your IP Address: @ViewBag.IPAddress
How to get Client IP Address of Visitors Machine in ASP.Net MVC