【问题标题】:How to log Client IP Address and Machine Name in ASP.NET如何在 ASP.NET 中记录客户端 IP 地址和机器名称
【发布时间】:2014-02-26 13:08:25
【问题描述】:

我正在 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 地址和机器名称的方式。

【问题讨论】:

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


【解决方案1】:

您是否尝试过使用以下功能?

Request.UserHostAddress

Request.UserHostName

请参阅以下在不同线程上发布的答案

Get client's IP address and computer name?

【讨论】:

    【解决方案2】:

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

    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

    【讨论】:

      【解决方案3】:
      Dns.GetHostEntry(log.IPAddress).HostName
      

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

      【讨论】:

        【解决方案4】:

        对于客户端 IP:

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

        对于客户端主机名:

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

        【讨论】:

        • 确保托管此应用程序的服务器必须具有正确的 TCP/IP 配置中的 DNS 服务器条目。
        猜你喜欢
        • 2021-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-24
        • 2011-07-22
        相关资源
        最近更新 更多