Click here to Skip to main content
15,886,110 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Hi I have develop a visitor counter using asp.net 2.0, but i think it is unnecessary incremented day by day. for example if the visitor count is 20 it shows around 60-70. please solve the problem, the code is written in global.asax file, given below:
VB
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application startup
Dim result As Integer
Dim conn As OleDbConnection
Dim comm As OleDbCommand
Dim strConnection As String
strConnection = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("database/counter.mdb")
conn = New OleDbConnection(strConnection)
comm = New OleDbCommand("SELECT visitor FROM [counter]where visitorname='naresh'", conn)
conn.Open()
result = CType(comm.ExecuteScalar(), String)
Application("counter") = result
'Dim total As String = Application("counter")
conn.Close()
End Sub

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when a new session is started
Application.Lock()
Application("counter") = Application("counter") + 1
'Application.UnLock()
Dim conn1 As OleDbConnection
Dim comm1 As OleDbCommand
Dim strConnection1 As String
strConnection1 = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("database/counter.mdb")
conn1 = New OleDbConnection(strConnection1)
comm1 = New OleDbCommand("UPDATE [counter] SET visitor = ' " & Application("counter") & " ' where visitorname='naresh' ", conn1)
conn1.Open()
comm1.ExecuteNonQuery()
conn1.Close()
Application.UnLock()
End Sub
Posted
Updated 14-Apr-10 19:21pm
v3

1 solution

Try:
1) Setup Web.Config file: Add your "breakpoint" (the amount of visits before the Application object dumps it's count to the Database
2) Global.asax:
VB
Sub Application_Start(sender As Object, e As EventArgs)
  Application("RunningCount") = Visit.GetTotalCount()
End Sub

Sub Session_Start(sender As Object, e As EventArgs)
  Application("TotalUsers") = CInt(Application("TotalUsers")) + 1
  Application("RunningCount") = CInt(Application("RunningCount")) + 1

  If CInt(Application("TotalUsers")) >= CInt(ConfigurationSettings.AppSettings("MAX")) Then
    Visit.Count(CInt(Application("TotalUsers")))
    Application("TotalUsers") = 0
  End If
End Sub


3) Create a new Class file (Visits.vb):
VB
Public Class Visits
  Public Shared Sub Count(visits As Integer)
     Dim connectionString As String = "workstation id=GEEK;packet size=4096;integrated security=SSPI;initial catalog=MyDatabase;persist security info=False"
     Dim myConnection As New SqlConnection(connectionString)
     Dim myCommand As New SqlCommand("UPDATE Visitor SET TotalVisits = @visits + TotalVisits WHERE VisitID = 1", myConnection)

     myCommand.Parameters.Add(New SqlParameter("@visits", visits))

     Try
        myCommand.Connection.Open()
        myCommand.ExecuteNonQuery()
     Catch
     Finally
        if myConnection.State = ConnectionState.Open Then myConnection.Close
     End Try

  End Sub
End Class


Its done!

Have a look at this article:
Implementing Hit Counter in Asp.net[^]
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900