2010-06-23 36 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 

     } 
} 
相关问题