2009-10-02 2 views
7

Я хочу отслеживать количество посетителей на моем сайте.Количество посетителей в WebSite с использованием ASP.Net и C#

Я попытался следующий код в классе Global.asax,

<script runat="server"> 

    public static int count = 0; 
    void Application_Start(object sender, EventArgs e) 
    { 
    Application["myCount"] = count; 
    } 

    void Session_Start(object sender, EventArgs e) 
    { 
    count = Convert.ToInt32(Application["myCount"]); 
    Application["myCount"] = count + 1; 
    } 

</script> 

Я получение значения на странице ASPX следующим образом:

protected void Page_Load(object sender, EventArgs e) 
{ 
    int a; 
    a = Convert.ToInt32((Application["myCount"])); 
    Label4.Text = Convert.ToString(a); 
    if (a < 10) 
    Label4.Text = "000" + Label4.Text ; 
    else if(a<100) 
    Label4.Text = "00" + Label4.Text; 
    else if(a<1000) 
    Label4.Text = "0" + Label4.Text; 
} 

выше кодирование работает отлично. Он правильно генерирует посетителей, но проблема в том, что когда я перезапускаю свою систему, переменная count снова начинается с 0, что логически неправильно.

Я хочу, чтобы значение count увеличивалось на 1 от последнего значения счета.

Так может ли кто-нибудь сказать мне, как выполнить эту задачу?

Пожалуйста, помогите мне! Спасибо заранее!

ответ

7

Если вы хотите, чтобы подсчет продолжал увеличиваться по сравнению с перезагрузкой приложения, вам нужно сохранить значение где-нибудь - в базе данных или в каком-либо файле где-нибудь и загрузить это значение при запуске приложения.

Кроме того, вы можете использовать следующие для обеспечения вашего отображается счетчик всегда по крайней мере 4-х символов:

int a; 
a = Convert.ToInt32(Application["myCount"]); 
Label4.Text = a.ToString("0000"); 

См Custom Numeric Format Strings для получения дополнительной информации.


Редактировать, чтобы ответить на комментарий

Лично я бы рекомендовал использовать базу данных по записи в файловую систему, по крайней мере, по следующим причинам:

  1. В зависимости от вашего хост, настройка базы данных может быть намного проще, чем включение доступа для записи в вашу файловую систему.
  2. Использование базы данных позволит вам сохранить ее как int, а не string.
  3. При интенсивном движении у вас возникнут проблемы с несколькими потоками, пытаясь открыть текстовый файл для доступа на запись - что вызовет блокировку файла и вызовет шею бутылки, в которой вы не нуждаетесь.

Различных ресурсы расскажут вам, как подключиться к базе данных из вашего кода, хорошее место для начала было бы это How To: Connect to SQL Server, и глядя в методы под «What are the alternatives» для получения подробной информации о том, как запрашивать и обновлять базу данных ,

1

Обычно вы используете другие инструменты для этой задачи (анализатор weblog).

При сохранении значения в памяти (приложение ["myCount"]) это значение не сохранится при перезапуске сервера.Таким образом, вы должны сохранить его в базе данных

  • равнине Textfile
  • независимо
+0

ОК Спасибо за ваш ответ. Если вы не возражаете, можете ли вы сказать мне, как это сделать? и выгодно ли хранить его в базе данных или текстовом файле? – Sheetal

6

C# код показано ниже:

protected void Page_Load(object sender, EventArgs e) 
    { 
     this.countMe(); 
    enter code here 
     DataSet tmpDs = new DataSet(); 
     tmpDs.ReadXml(Server.MapPath("~/counter.xml")); 

     lblCounter.Text = tmpDs.Tables[0].Rows[0]["hits"].ToString(); 
    } 

    private void countMe() 
    { 
     DataSet tmpDs = new DataSet(); 
     tmpDs.ReadXml(Server.MapPath("~/counter.xml")); 

     int hits = Int32.Parse(tmpDs.Tables[0].Rows[0]["hits"].ToString()); 

     hits += 1; 

     tmpDs.Tables[0].Rows[0]["hits"] = hits.ToString(); 

     tmpDs.WriteXml(Server.MapPath("~/counter.xml")); 

    } 

Тогда вы должны иметь XML файл в корневом каталоге, чтобы код работал. Файл XML будет выглядеть следующим образом:

<?xml version="1.0" encoding="utf-8" ?> 
<counter> 
    <count> 
    <hits>0</hits> 
    </count> 
</counter> 
+0

, когда один человек обновляет страницу тандема, количество счетчиков увеличивается! – AminM

2

В первом ответе U было объявить переменную счетчика в глобальном масштабе, поэтому в каждом новом счете сеанса начинается с 0.for лучше результат, приращение приложения [] переменная внутри метода session_start.