2010-06-23 64 views
1

我有一個多個網站坐在asp.net應用程序。 在這個應用程序中使用不同的域使用相同的頁面。 所有頁面從名爲:PageBase 的基類繼承,它們從System.Web.UI.Page繼承。 通過使用:HttpContext.Current.Request.ServerVariables [「HTTP_HOST」] i cen確定什麼是域,然後獲得我需要的所有信息 這個域,一切都運行良好。多個網站坐在應用程序訪問者計數器

我的問題開始時,我想根據會話使用不同的訪客計數器爲每個網站。 因爲Global.asax有全局事件: Session_Start Session_End 簡單的計數器會統計所有站點上的所有訪問者。 我嘗試使Global.asax在不同的類 後面的代碼,但我沒有得到該類的PageBase(System.Web.UI.Page)網站信息。

我會很感激您的任何想法解決這個問題

cheinan

回答

0

我不能夠從一個「網站」在同一會話內瀏覽到其他每個網站都上

不同的會話創建。

,但我非常感謝你,因爲你給我帶的想法 如何SOLV這個問題

這裏是我做過什麼: 我創建計數器類詞典「onlineList」爲我自動科瑞爲每個站點關鍵:

public abstract class counter{ 
public static Dictionary<string, int> onlineList = new Dictionary<string, int>(); 

//do add one count 
public static void doSiteCountOn(string siteID) 
{ 
    if (onlineList.ContainsKey(siteID)) 
    { 
     onlineList[siteID] += 1; 
    } 
    else 
    { 
     onlineList.Add(siteID, 1); 
    } 
} 

//do less one count 
public static void doSiteCountOff(string siteID) 
{ 
    if (onlineList.ContainsKey(siteID)) 
    { 
     onlineList[siteID] -= 1; 
    } 
    else 
    { 
     onlineList.Add(siteID, 0); 
    } 
} 

//get the count 
public static string onlineCount(string siteID) 
{ 
    if (onlineList.ContainsKey(siteID)) 
    { 
     return onlineList[siteID].ToString(); 
    } 
    else 
    { 
     return "0"; 
    } 
} 

//reset the count if needed 
public static void resetCount(string siteID) 
{ 
    if (onlineList.ContainsKey(siteID)) 
    { 
     onlineList[siteID] = 0; 
    } 
}} 

我的基地頁我檢查是否有會議[「的siteID」] ,如果沒有我開始一個使我的計數器類1添加到網站計數器:

if (Session["siteID"] == null){ 
Session["siteID"] = _siteID; 
counter.doSiteCountOn(_siteID);} 

和finaly我Session_End中我做一個數少:

void Session_End(object sender, EventArgs e){ 
if (Session["siteID"] != null) 
    { 
     counter.doSiteCountOff(Session["siteID"].ToString()); 
    }} 

感謝您的HALP 和對不起我遲到respons

cheinan

0

我假設你能夠從一個「網站」在同一會話內瀏覽到其他,並且有隻創建一個會話。

在這種情況下,你需要將以下內容添加到您的會話:

Session["CountedHosts"] = new List<string>(); 

然後,你的基本頁面上,添加以下內容:

var host = Request.ServerVariables["HTTP_HOST"]; 
var countedHosts = Session["CountedHosts"] as List<string>; 
if (countedHosts != null && !countedHosts.Contains(host)) 
{ 
    countedHosts.Add(host); 
} 

然後在會議結束時,記錄每個被訪問過的主機。

var countedHosts = Session["CountedHosts"] as List<string>; 
if (countedHosts != null) 
{ 
    foreach (var host in countedHosts) 
    { 
      //Log it 

     } 
} 
相關問題