Domanda

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.

È stato utile?

Soluzione

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?

Altri suggerimenti

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top