如何在ASP.NET中记录客户端IP地址和机器名称



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

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

我正在使用log4net进行记录。

我尝试了此代码,但是使用IIS-7而不是客户端机器名称部署此Web应用程序后,我在日志中获取服务器计算机主机名。

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>

它的非常庞大的项目,所以请向我建议我的方式,需要最小的代码更改以记录客户端的IP地址和机器名称。

您是否尝试使用以下?

Request.UserHostAddress
Request.UserHostName

请参阅以下答案发布在其他线程上

获取客户端的IP地址和计算机名称?

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

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

Dns.GetHostEntry(log.IPAddress).HostName

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

用于客户端IP:

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

用于客户端主机名:

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

最新更新