كيف يمكنني تحديد عدد المستخدمين على موقع ASP.NET (IIS)؟ومعلوماتهم؟

StackOverflow https://stackoverflow.com/questions/155593

سؤال

هل هناك طريقة لتحديد عدد المستخدمين الذين لديهم جلسات عمل نشطة في تطبيق ASP.NET؟لدي صفحة إدارة/أدوات في تطبيق معين، وأرغب في عرض معلومات تتعلق بجميع الجلسات المفتوحة، مثل عدد الجلسات، وربما عناوين الأجهزة الطالبة، أو معلومات الاعتماد الأخرى لكل مستخدم.

هل كانت مفيدة؟

المحلول

ASP.NET عدادات الأداء مثل دولة جلسات عمل الملقم النشطة (إن عدد جلسات عمل المستخدم النشط) ينبغي أن تساعدك على الخروج. ثم يمكنك فقط قراءة وعرض أداء العدادات من صفحة المشرف. .

نصائح أخرى

في global.aspx

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

void Session_Start(object sender, EventArgs e)
{
    // Code that runs when a new session is started
    Application.Lock();
    Application["OnlineUsers"] = (int)Application["OnlineUsers"] + 1;
    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();
    Application["OnlineUsers"] = (int)Application["OnlineUsers"] - 1;
    Application.UnLock();
}

ملحوظة: يتم استخدام أساليب Application.Lock وApplication.Unlock لمنع مؤشرات الترابط المتعددة من تغيير هذا المتغير في نفس الوقت.

في Web.config

تحقق من أن SessionState هو "InProc" لكي يعمل هذا

    <system.web>
        <sessionState mode="InProc" cookieless="false" timeout="20" />
    </system.web>

في ملف aspx الخاص بك

Visitors online: <%= Application["OnlineUsers"].ToString() %>

ملحوظة: تم نسخ الكود في الأصل من http://www.aspdotnetfaq.com/Faq/How-to-show-number-of-online-users-visitors-for-ASP-NET-website.aspx (الرابط لم يعد نشطا)

إذا كنت تستخدم عضوية صافي هل يمكن استخدام

Membership.GetNumberOfUsersOnline()

والمزيد حول هذا الموضوع: HTTP: / /msdn.microsoft.com/en-us/library/system.web.security.membership.getnumberofusersonline.aspx

إذا كنت ترغب في تنفيذ نفس الآلية من قبل نفسك، يمكنك تحديد مثل فئة CurrentUserManager وتنفيذ نمط المفرد هنا. أن هذا الكائن المفرد من CurrentUserManager الطبقة تكون فريدة من نوعها في في AppDomain. في هذه الفئة سوف تقوم بإنشاء المثال النفس مرة واحدة، وسوف يمنع الآخرين من خلق حالات جديدة من هذه الفئة عن طريق إخفاء المنشئ الخاص به. كلما يأتي طلب لهذا الكائن، من شأنها أن مثيل واحد يعطي استجابة. لذلك، إذا قمت بتطبيق القائمة التي تحافظ على سجلات كل مستخدم (عندما يأتي المستخدم في، يمكنك إضافة له إلى القائمة، وعندما خرج، قمت بإزالة له من القائمة). وأخيرا، إذا كنت تريد حساب المستخدم الحالي هل يمكن أن مجرد طرح عدد القائمة لهذا الكائن المفرد.

والطريقة رأيت هذا يحدث في الماضي هي إضافة رمز إضافية إلى الحدث Session_OnStart في ملف Global.asax لتخزين المعلومات في جلسة وسيلة الملحد، على سبيل المثال قاعدة بيانات أو كائن HttpApplicationState. هذا يتوقف على الاحتياجات الخاصة بك ويمكن أيضا استخدام Session_OnEnd لإزالة هذه المعلومات.

وقد تحتاج إلى التهيئة وتنظيف بعض من هذه المعلومات باستخدام أحداث Application_Start وApplication_End.

وصفحة إدارة ويمكن بعد قراءة هذه المعلومات والإحصاءات عرض الخ.

وهذا يفسر على نحو أكثر عمقا في http://msdn.microsoft. كوم / EN-US / مكتبة / ms178594.aspx و HTTP: //msdn.microsoft.com/en-us/library/ms178581.aspx .

وإذا كنت تستخدم مزود خدمة كمزود حالة جلسة يمكنك استخدام هذا الرمز لحساب عدد مستخدمي الانترنت:

SELECT Count(*) As Onlines FROM ASPStateTempSessions WHERE Expires>getutcdate()

ويمكنك استخدام PerformanceCounter الحصول على البيانات من مساحة الاسم System.Diagnostics. انها تسمح لك للحصول على "جلسات العمل النشطة"، وأكثر من ذلك بكثير. انها تسمح لك للحصول من الملقم المحلي، فضلا عن جهاز التحكم عن بعد.

وهنا مثال على كيفية القيام بذلك على الجهاز المحلي

void Main()
{
    var pc = new PerformanceCounter("ASP.NET Applications", "Sessions Active", "__Total__");

    Console.WriteLine(pc.NextValue());
}

وأو الملقم البعيد كنت ستفعل:

void Main()
{
    var pc = new PerformanceCounter("ASP.NET Applications", "Sessions Active", "__Total__", "ServerHostName.domain");

    Console.WriteLine(pc.NextValue());
}

عدادات الأداء لASP.NET توفر قائمة كاملة من ASP. عدادات NET التي يمكنك مراقبة

يأتي Google Analytics مزودًا بواجهة برمجة التطبيقات (API) التي يمكن تنفيذها على تطبيق ASP.NET MVC الخاص بك.يحتوي على وظيفة RealTime بحيث يمكن تتبع العدد الحالي من المستخدمين على موقع الويب الخاص بك وإعادته إلى تطبيقك.

وهنا بعض المعلومات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top