Question

I am developing a Web Application in ASP.net, which requires login name and password.

I want to log IP Address and Machine Name of client, who are accessing this Web Application.

I am using log4net for logging.

I have tried this piece of code, but I am getting Server Machine HostName in log after deploying this web application using IIS-7 instead of Client Machine Name.

Login Page Page_Load Method:

protected void Page_Load(object sender, EventArgs e)
{
    log4net.GlobalContext.Properties["Hostname"] = Dns.GetHostName();
}

Web.Config Changes:

 <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date %property{Hostname} [%thread] %-5level %logger - %message%newline" />
 </layout>

Its really huge project, So Please suggest me the way which requires minimum changes in Code to log the IP Address and Machine Name of Client.

Was it helpful?

Solution

Did you try using following?

Request.UserHostAddress

Request.UserHostName

Refer to following answer posted on a different thread

Get client's IP address and computer name?

OTHER TIPS

Try For Client Computer name..

string[] computer_name = System.Net.Dns.GetHostEntry(Request.ServerVariables["remote_addr"]).HostName.Split(new Char[] { '.' });
  String ecname = System.Environment.MachineName;
            txtComputerName.Text = computer_name[0].ToString();

For Client IP address..

Request.ServerVariables["REMOTE_ADDR"]

Check this also... https://stackoverflow.com/a/19286308/3156647

Dns.GetHostEntry(log.IPAddress).HostName

For some reason the other answers didn't work on my shared hosting server. Go figure...

For Client IP:

System.Web.HttpContext.Current.Request.ServerVariables["**REMOTE_ADDR**"];

For Client Hostname:

System.Net.Dns.GetHostEntry(Request.ServerVariables["**REMOTE_HOST**"]).HostName;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top