如何在ASP.net中记录客户端IP地址和计算机名称

时间:2014-02-03 06:02:56

标签: c# asp.net iis-7 log4net

我正在ASP.net中开发一个Web应用程序,它需要登录名和密码。

我想记录正在访问此Web应用程序的客户端的IP地址和计算机名称。

我正在使用log4net进行日志记录。

我已经尝试过这段代码,但在使用IIS-7而不是客户端计算机名部署此Web应用程序后,我在日志中获得了Server Machine HostName。

Login Page Page_Load方法:

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

Web.Config更改:

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

这是一个非常庞大的项目,所以请建议我在Code中记录客户的IP地址和机器名所需的最小更改方式。

4 个答案:

答案 0 :(得分:15)

您尝试过使用以下内容吗?

Request.UserHostAddress

Request.UserHostName

请参阅以下在不同主题上发布的答案

Get client's IP address and computer name?

答案 1 :(得分:5)

尝试 对于客户端计算机名称..

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();

对于客户端IP地址..

Request.ServerVariables["REMOTE_ADDR"]

检查一下...... https://stackoverflow.com/a/19286308/3156647

答案 2 :(得分:0)

Dns.GetHostEntry(log.IPAddress).HostName

由于某种原因,其他答案在我的共享托管服务器上无效。去图......

答案 3 :(得分:0)

对于客户端IP:

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

对于客户端主机名:

System.Net.Dns.GetHostEntry(Request.ServerVariables["**REMOTE_HOST**"]).HostName;