En  Fa
درحال مشاهده: مقالات  > توسعه تحت وب  > ASP.NET  > محاسبه کاربران آنلاین در ASP.NET
 
 

دسته بندی مقالات

 

 

دسته بندی سوالات

 



 

محاسبه کاربران آنلاین در ASP.NET

   

محاسبه کاربران آنلاین در ASP.NET

با استفاده از این ابزار که برای استفاده در ASP.NET نوشته شده است می توانید تعداد کاربران آنلاین در سایت خود را مشاهده کرده و یا حتی تعداد کاربران میهمان و عضو را از هم تفکیک کنید.

نصب و استفاده

پس از اینکه فایل مربوط ب این ابزار رو از اینترنت دانلود کردید باید یک رفرنس به این فایل بدهید. اگر با دادن رفرنس آشنا هستید پاراگراف بعدی رو مطالعه کنید.

برای دادن رفرنس ابتدا بر روی پروژه خود کلیک راست کرده و گزینه Add Reference رو انتخاب کنید، سپس فایل اسمبلی dll رو انتخاب کنید. بدین ترتیب اسمبلی به عنوان رفرنس به پروژه اضافه خواهد شد.

در ادامه باید این ابزار رو در لیست HttpModule ها اضافه کنید. برای این کار فایل web.config پروژه را باز کنید (در صورت عدم وجود از Add new item گزینه Web configuration file رو انتخاب کنید) و کد زیر را به آن اضافه کنید:

<httpModules>
  <add name="OnlineActiveUsers" type="OnlineActiveUsers.OnlineUsersModule"/>
</httpModules>

سپس باید به رویداد session_end در فایل global.asax خود کدی رو اضافه کنید. برای این کار فایل global.asax را باز کنید و رویداد Session_End رو پیداد کرده و کد زیر در آن بنویسید.

OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.UpdateForUserLeave()

نتیجه در #C باید چیزی مانند کد زیر باشد:

void Session_End(object sender, EventArgs e)
{
    OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.UpdateForUserLeave();
}

بدین ترتیب این ابزار به درستی راه اندازی شد و شروع به بعالیت خواهد کرد.

برای دسترسی به آمار کافیست که به متغیر OnlineActiveUsers.OnlineUsersInstance.OnlineUsers دسترسی پیدا کنید. در زیر تعدادی از ویژگی های مهم این کلاس رو برای شما شرح می دهم:

UsersCount: تعداد کل کاربران آنلاین در سایت شما را نشان می دهد.

GuestUsersCount: تعداد کل کاربران مهمان در سایت شما را نشان می دهد. این گزینه زمانی کار خواهد کرد که از توابع SetUserOffline و SetUserOnline که در ادامه توضیح داده خواهند شد به درستی استفاده کنید.

RegistredUsersCount: تعداد کاربران عضو و آنلاین در سایت شما را نشان می دهد. این گزینه زمانی کار خواهد کرد که از توابع SetUserOffline و SetUserOnline که در ادامه توضیح داده خواهند شد به درستی استفاده کنید.

محاسبه کاربران میهمان و عضو

برای محاسبه صحیح تعداد کاران عضو و میهمان تعدادی مراحل اضافیتر وجود دارد.

اولین حالت زمانی است که کاربر وارد سایت شما شده و login می کند. برای این منظور برنامه نویسان از روش های مختلفی استفاده می کنند که حالت استاندارد و ساده آن استفاده از کنترل Login در ASP.NET است. اگر شما از این کنترل استفاده نمی کنید روش بعدی را مطالعه نمایید.

در رویداد LoggedIn از کنترل Login باید کد زیر را بنویسید:

OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.SetUserOnline(Login1.UserName)

نتیجه در #C باید چیزی مانند زیر باشد.

protected void Login1_LoggedIn(object sender, EventArgs e)
{
    OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.SetUserOnline(Login1.UserName);
}

با این کار مشخص می شود که این کاربر وارد سایت شده است و به عنوان کاربر عضو محاسبه خواهد شد.

روش دوم برای زمانی است که از کنترل Login استفاده نمی کتید و روش خواص خودتان را دارید، در این صورت تنها کاری که لازم است انجام دهید این است که پس از تایید هویت شدن کاریر از کد بالا با نام کاربری وارد شده استفاده کنید، برای تاکید دوباره ان کد را در زیر می نویسم:

OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.SetUserOnline(UserName)

دومین حالت زمانی این کاربر در سایت شما Login است و می خواهد از حساب خود در سایت خارج شود و یا اصطلاحا Logout کند. در صورتی که از کنترل LoginStatus استفاده می کنید می توانید کد مربوط به این عمل رو در رویداد LoggedOut مربوط به این کنترل بنویسید:

OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.SetUserOffline(User.Identity.Name)

که نتیجه در #C مانند زیر خواهد بود:

protected void LoginStatus1_LoggedOut(object sender, EventArgs e)
{
    OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.SetUserOffline(User.Identity.Name);
}

در اینجا User.Identity.Name نام کاربری است که کاربر قبلا با آن وارد سایت شده بود.

در حالت کلی برای اینکه کاربر در لیست محاسبه به عنوان اعضای آنلاین خارج شود باید از کد زیر بالا که برای تاکیید دوباره آن را در پایین می نویسم استفاده کتید:

OnlineActiveUsers.OnlineUsersInstance.OnlineUsers.SetUserOffline(UserName)

که در اینجا UserName نام کاربری است که کاربر قبلا با آن وارد سایت شده بود. دقت کنید این دقیقا باید همان کاربر باشد.

پس از انجام این مراحل ویژگی های GuestUsersCount و RegistredUsersCount به درستی کار خواهند کرد و به ترتیب تعداد کاربران میهمان و تعداد کاربران عضو را نمایش خواهند داد.

تعدادی از سایر ویژگی ها

  • تابع IsOnline

این تابع جهت بررسی آنلاین بودن کاربر مورد استفاده قرار می گیرد. ورودی این تابع نام کاربری از نوع رشته و خروجی آن در صورت آنلاین بودن کاربر true در غیر این صورت false است.

  • تابع GetLastActivity

این تابع زمان آخزین فعالیت کاربر را بر می گرداند. ورودی این تابع نام کاربری از نوع رشته و خروجی آن در صورتی که کاربر آنلاین باشد زمان آخرین فعالیت از نوع DateTime است در غیر صورت خروجی null که در vb.net مقدار nothing خواهد بود.

ضمایم
OnlineActiveUsers.zip
حجم : 20.00 KB  دفعات دریافت : 480
Compiled assembly with source codes  
جزئـیات تاپيک
      
نویسنده: Salar Khalilzadeh
تاریخ ارسال: 1387/08/09 10:04 AM
به روز رسانی: 1387/10/05 3:44 PM
تعداد مشاهده: 3782
تعداد آرا: 11
امتیاز آرا:   از 3.64 امتیاز

رای شما به این مطلب:

bookmark this
 

تعداد کل نظرات: 8
8 مشكل در webconfig
 
من در webconfig م session state ندارم!!!
بايد چكار كنم؟؟
  توسط: hasanshamim در تاریخ: 1388/11/11 4:25 PM  پاسخ
7 پاسخ: مشكل در webconfig
 
کاری لازم نیست انجام بدید. در حالت عادی SessionState برای سایت فعال است و این برای این ابزار کافی هست.
  توسط: Salar Khalilzadeh در تاریخ: 1388/11/13 8:07 AM  پاسخ
6 session state
 
حالا اگه session state من  InProc نباشه چه باید کرد؟ من از   StateServer  استفاده میکنم چون مجبورم از web garden  استفاده کنم.
 
  توسط: navid1 در تاریخ: 1388/11/07 6:40 PM  پاسخ
5 پاسخ: session state
 
مشکلی پیش نمی یاد. هدف این هست که در سایت باید Session فعال باشه و به غیر از حالت Off که Session غیر فعال است این کلاس به خوبی کار خواهد کرد.
  توسط: Salar Khalilzadeh در تاریخ: 1388/11/08 8:24 AM  پاسخ
4 dll درست کار نمی کنه
 
سلام من همه کارهایی که گفتید انجام دادم ولی تعداد کاربران مهمان رو که 0 نشون می ده و کاربران رجیستر شده رو هم معادل کل کاربران آنلاین یعنی مهمان و غیر مهمان نشون می ده
  توسط: misagh110 در تاریخ: 1388/07/06 12:45 PM  پاسخ
3 پاسخ: dll درست کار نمی کنه
 
توجه کنید که حتما بایدSession در سایتتون فعال باشه. بررسی کنید که SessionState در فایل web.config برابر InProc باشه.
در ضمن آیا این اشکال در سیستم تست و محیط کار شما نمایش داده میشه یا در سایت که آپلود کردید؟
  توسط: Salar Khalilzadeh در تاریخ: 1388/07/07 12:54 AM  پاسخ
2 مشکل در dll مربوط به تشخیص افراد آنلاین
 
با سلام و تشکر
من از dll مربوط به تشخیص افراد آنلاین در پروژه ام استفاده کردم ، مشکلی که در استفاده برخوردم این بود  که زودتر از اینکه session مربوط یک عضو منقضی شود از تعداد افراد عضو آنلاین کم می کند .
به عبارتی دیگر زمانیکه من با نام کاربری خودم وارد سایت هستم تعداد افراد عضو سایت را   1  نفر اعلام می کند ، اما بعد از 5 دقیقه که هنوز داخل سایت هستم این تعداد را صفر اعلام می کند در حالیکه session من منقضی نشده است.
آیا راهی برای برون رفت از این مشکل وجود دارد ؟
با تشکر.
  توسط: fnz60 در تاریخ: 1388/04/17 4:34 PM  پاسخ
1 پاسخ: مشکل در dll مربوط به تشخیص افراد آنلاین
 
عملکرد حذف کاربران غیر فعال هر 4 دقیقه رخ می ده.
یعنی اگر کاربری قبل از 4 دقیقه هیچ صفحه ای را مرور نکند از لیست کاربران آنلاین حذف میشه!
در کل مشکلی نخواهد بود اگه کاربر بعد این 4 دقیقه مجددا وارد سایت بشه، که در این صورت هم جزو کاربران فعال خواهد بود.
علت عدم استفاده از session هم به خاطر این هست که هر session در 20 دقیقه منقضی میشه و این زمان برای تشخیص کاربران غیر فعال اصلا مناسب نیست.
اگه مشکل دیگه ای هست بفرمایید
  توسط: Salar Khalilzadeh در تاریخ: 1388/05/11 11:08 PM  پاسخ
زبان سایت:

Copyright © 2009 SoftProjects.org | About | Valid XHTML | CSS