سؤال

انا مبتدئ و تطوير المواقع باستخدام ASP .Net 2.0 مع C# 2005.أود أن أضيف منشأة لحساب لا.من الزوار إلى موقع الويب الخاص بي.لقد جمعت المعلومات الأساسية لإضافة هذه الميزة باستخدام العالمية.asax.لقد جعلت تعديلات على شبكة الإنترنت.التكوين عن طريق إضافة السطر "" بموجب النظام.ويب القسم.

أنا باستخدام الجدول للحفاظ على عدد من الزوار.ولكن لا أعرف كيفية إكمال المهمة.الافتراضي العالمي.asax جاء مع أقسام مختلفة Application_Start, Application_End, Application_Error, Session_Start و Session_End.حاولت استخراج القيمة الحالية العداد في Application_Start القسم وتخزينها في متغير عمومي.أود أن الcounter في Session_Start وكتابة تعديل القيمة إلى الجدول في Application_End.

لقد حاولت استخدام العام subroutines/وظائف.ولكن أين يجب أن أضع تلك الوظائف الفرعية?حاولت إضافة subroutines في العالم.asax نفسها.ولكن الآن أنا على الحصول على أخطاء, كما يمكن إضافة مرجع إلى البيانات.SqlClient العالمية.asax و احتاج المراجع إلى SqlConnection, SqlCommand, SqlDataReader.... الخلتنفيذ الميزات.لا بد لي من إضافة ملفات فئة لكل الوظائف الفرعية?يرجى توجيه لي.

وأود أيضا أن تنفيذ ميزة تتبع إلى موقع الويب الخاص بي و تخزين عنوان IP المتصفح الذي تستخدمه, تاريخ ووقت الزيارة دقة الشاشة وغيرها من المواقع بلدي الزوار.كيف يمكن أن أفعل ذلك ؟

في انتظار اقتراحات.

لاليت كومار بارق

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

المحلول

وجوجل النصي التحليل هو بالضبط ما تحتاجه. لأن الدورة، يفتح إرادة الزواحف أيضا.

نصائح أخرى

عن السذاجة التنفيذ ، يمكنك استخدام مخصص HttpModule.لكل طلب إلى التطبيق الخاص بك, كنت:

  1. تحقق مما إذا كان الطلب.ملفات تعريف الارتباط يتضمن تتبع الكوكيز
  2. إذا تتبع الكوكيز لا وجود لها, وربما هذا هو زائر جديد (أو آخر ، كوكي قد انتهت-انظر 4.)
  3. جديد الزوار سجل الزوار احصائيات, ثم تحديث عدد الزوار
  4. إضافة كوكي تتبع إلى الاستجابة إرسالها مرة أخرى إلى الزائر.سوف ترغب في تعيين ملف تعريف الارتباط هذا أن يكون بدلا من طويلة فترة انتهاء الصلاحية ، لذلك كنت لا تحصل على الكثير من "كاذبة ايجابيات" مع عودة المستخدمين الذين ملفات تعريف الارتباط قد انتهت.

هنا بعض العظمي البرمجية أدناه (حفظ باسم StatsCounter.cs):

using System;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Transactions;

namespace hitcounter
{
    public class StatsCounter : IHttpModule
    {
        // This is what we'll call our tracking cookie.
        // Alternatively, you could read this from your Web.config file:
        public const string TrackingCookieName = "__SITE__STATS";

        #region IHttpModule Members

        public void Dispose()
        { ;}

        public void Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
            context.PreSendRequestHeaders += new EventHandler(context_PreSendRequestHeaders);
        }

        void context_PreSendRequestHeaders(object sender, EventArgs e)
        {
            HttpApplication app = sender as HttpApplication;
            HttpResponse response = app.Response;
            if (response.Cookies[TrackingCookieName] == null)
            {
                HttpCookie trackingCookie = new HttpCookie(TrackingCookieName);
                trackingCookie.Expires = DateTime.Now.AddYears(1);  // make this cookie last a while
                trackingCookie.HttpOnly = true;
                trackingCookie.Path = "/";
                trackingCookie.Values["VisitorCount"] = GetVisitorCount().ToString();
                trackingCookie.Values["LastVisit"] = DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss");

                response.Cookies.Add(trackingCookie);
            }
        }

        private long GetVisitorCount()
        {
            // Lookup visitor count and cache it, for improved performance.
            // Return Count (we're returning 0 here since this is just a stub):
            return 0;
        }

        void context_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication app = sender as HttpApplication;
            HttpRequest request = app.Request;

            // Check for tracking cookie:
            if (request.Cookies[TrackingCookieName] != null)
            {
                // Returning visitor...
            }
            else
            {
                // New visitor - record stats:
                string userAgent = request.ServerVariables["HTTP_USER_AGENT"];
                string ipAddress = request.ServerVariables["HTTP_REMOTE_IP"];
                string time = DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss");
                // ...
                // Log visitor stats to database

                TransactionOptions opts = new TransactionOptions();
                opts.IsolationLevel = System.Transactions.IsolationLevel.Serializable;
                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, opts))
                {
                    // Update visitor count.
                    // Invalidate cached visitor count.
                }
            }
        }

        #endregion
    }
}

سجل هذه الوحدة بإضافة الأسطر التالية إلى الويب الخاص بك.ملف التكوين:

<?xml version="1.0"?>
<configuration>
    ...
    <system.web>
        ...
        <httpModules>
          <add name="StatsCounter" type="<ApplicationAssembly>.StatsCounter" />
        </httpModules>
    </system.web>
</configuration>

(مع استبدال اسم تطبيق الويب الخاص بك أو مشروع أو إزالته إذا كنت تستخدم موقع المشروع.

ونأمل أن هذا سوف يكون كافيا للحصول على أنك بدأت تجريب.كما أشار آخرون على الرغم الفعلية الموقع, كنت أفضل حالا باستخدام Google (أو بعض) تحليلات حل لهذا.

جوجل تحليلات . لا تحاول إعادة اختراع العجلة إلا أ) عجلة لا تفعل ما تريد أو ب) كنت مجرد محاولة لمعرفة كيفية عمل عجلة

وأنا لا يمكن إلا أن الثانية اقتراح جاريث لاستخدام تحليل حركة المرور المتاحة بالفعل. إذا كنت لا تحب فكرة إعطاء بيانات Google على حركة المرور على الانترنت الخاص بك، يمكنك أيضا تحميل ملفات السجل وتحليلها مع واحدة من العديد من <لأ href = "http://en.wikipedia.org/wiki/List_of_web_analytics_software "يختلط =" نوفولو noreferrer "> أدوات تحليل الويب ملف سجل الخادم المتاحة .

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