PDA

View Full Version : مشکل در آمار گیری از سایت



مهدی رحیم زاده
شنبه 09 شهریور 1387, 22:23 عصر
سلام
من برای آمار گیری تعداد بازدید توی سایتم توی Global این کدو نوشتم :

<%@ Application Language="C#" %>

<script runat="server">

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

void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown

}

void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs

}

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

void Session_End(object sender, EventArgs e)
{
// Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file. If session mode is set to StateServer
// or SQLServer, the event is not raised.
Application.Lock();
int i = Convert.ToInt32(Application["UserCount"]);
i--;
Application["UserCount"] = i;
Application.UnLock();
}

</script>
اما این کد با هربار Refresh صفحه یکبار اجرا میشه یعنی هر بار که صفحه Refresh میشه به عنوان یک بار بازدید یکی به اون اضافه می کنه . چکار کنم که درست بشه .
ممنون

babi_wd
شنبه 09 شهریور 1387, 23:06 عصر
اصولا به این روش نمیشه اعتماد کرد.قبلا در این مورد تو سایت بحث شده.راه حل هایی هم ارائه شده

mp2009
شنبه 09 شهریور 1387, 23:25 عصر
عزیز چرا جستجو نمیکنی؟
خودم چند وقت پیش یه نمونه کامل رو تو سایت گذاشتم.
جستجو کن پیداش میکنی

VB.NET2005
یک شنبه 10 شهریور 1387, 00:29 صبح
اینم مثال جناب Mp2009



Dim Dal As New Penhani.DAL()
Dim UserrSystem As New Users()
If UserrSystem.UserLogin(txt_UserName.Text, txt_Password.Text, drp_Role.SelectedValue) <> "No_User_Exist" Then
If drp_Role.SelectedValue = "Admin" Then

OnlineActiveUsers.OnlineUsersInstance.OnlineUsers. SetUserOnline(txt_UserName.Text)
End If

Dim myConnection As New System.Data.SqlClient.SqlConnection(Dal._Connectio nString)
Dim myCommand As New System.Data.SqlClient.SqlCommand("sp_AddOnlineUser", myConnection)
myCommand.CommandType = System.Data.CommandType.StoredProcedure
myCommand.Parameters.Add("@IP_Address", Request.ServerVariables("REMOTE_ADDR"))
myCommand.Parameters.Add("@Session_ID", Session.SessionID)
myCommand.Parameters.Add("@UserName", txt_UserName.Text)
myCommand.Parameters.Add("@Role", drp_Role.SelectedValue)

'Execute Command
myConnection.Open()
myCommand.ExecuteNonQuery()
myConnection.Close()