ASP.NET Web 应用访问者计数器

ASP.NET web application visitor counter

我有一个简单的 Web 应用程序,我需要用它来跟踪访问者。每个访客的信息存储在下面table:

访客详细信息:

| ID | ComputerName | VisitDate | CountryCode | Platform | Browser | BrowserVersion |

[ComputerName]是访问者的IP地址。

table 包含 ipv6 记录,这会导致计算访问者数量时出现问题,有时还会导致令牌错误。

强制访问者使用 ipv4 是否明智? 如果是,怎么做?

void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup
    Application["NoOfVisitors"] = 0;
}





void Session_Start(object sender, EventArgs e)
{
    // Code that runs when a new session is started
    Application.Lock();
    Application["NoOfVisitors"] = (int)Application["NoOfVisitors"] + 1;
    Application.UnLock();
}

in .aspx page

<asp:Label runat="server" ID="lbluser" />
in .aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    lbluser.Text = Application["NoOfVisitors"].ToString();
}
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        RegisterRoutes(RouteTable.Routes);

        WebpageCounter.SaveVisitor(new WebpageVisitor()
        {
            VisitorIP = HttpContext.Current.Request.UserHostAddress,
            VisitedOn = DateTime.Now
        });
    }
-------------
Below Code is for IP Address
string ipaddress;
ipaddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (ipaddress == "" || ipaddress == null)
    ipaddress = Request.ServerVariables["REMOTE_ADDR"];
    public string IpAddress()
{
string strIpAddress;
strIpAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (strIpAddress == null)
{
strIpAddress = Request.ServerVariables["REMOTE_ADDR"];
}
return strIpAddress;
}

foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName()))
 { 
if (IPA.AddressFamily.ToString() == "InterNetwork")
 { 
IP4Address = IPA.ToString(); 
break;
 } 
}

另请参考以下链接:

http://www.4guysfromrolla.com/articles/071807-1.aspx http://tutorialgenius.blogspot.in/2010/09/aspnet-get-ipv4-address-even-if-user-is.html