如何在访问我的网站时获取用户信息

时间:2013-10-30 17:57:12

标签: c# asp.net dll

我在ASP.NET中有一个简单的网站,我已经加载了一个DLL。我通过IIS发布了该站点,我只想在用户端显示他的机器名,登录用户和IP。我尝试过以下方法:

我的DLL:

namespace ClassLibrary1
  {
    public class Class1
    {
      public string getInfo()
      {
        IPAddress[] ips;

        ips = Dns.GetHostAddresses(Dns.GetHostName());

        string returns = null;

    returns = Environment.MachineName + Convert.ToChar(9) + Environment.UserName;
        foreach (IPAddress ip in ips)
        {
          if (ip.AddressFamily == AddressFamily.InterNetwork)
          returns += Convert.ToChar(9) + ip.ToString();
        }
        return returns;

    }
  }
}

在网站上:

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ClassLibrary1.Class1 cl = new ClassLibrary1.Class1();
        Label2.Text = cl.getInfo();
    }
}

输出不是我的预期。在我的机器上,当我访问该网站时,我得到了

MyMachineName    Classic .NET AppPool    MyIp

当其他人打开它时,他们也会获得这些信息,而不是他们的机器名,登录用户和IP。

所以我的问题是如何检索他们的信息?

提前致谢。

1 个答案:

答案 0 :(得分:4)

您正在从为网站服务的机器而不是访客的机器中提取统计数据。您应该看看HttpRequest.ServerVariables NameValueCollection而不是。

其中一些“变量”,特别是您感兴趣的变量,来自客户端每个Web请求中的标头。请记住,您实际上并未与客户端的计算机进行 ,而是从客户端将发送给您。因此,如果它们根本不存在,则无法保证它们是准确的(代理等)。

那就是说,你可能感兴趣的是:

var ip =      HttpRequest.ServerVariables["REMOTE_ADDR"];
var user =    HttpRequest.ServerVariables["REMOTE_USER"]; // Windows auth
var user =    HttpRequest.ServerVariables["LOGON_USER"];  // Non-Windows auth
var machine = HttpRequest.ServerVariables["REMOTE_HOST"];

Here's the list of variables可以选择。