2010-06-23 2 views
1

나는 여러 웹 asp.net 응용 프로그램을 앉아있다. 이 응용 프로그램에서는 동일한 페이지를 사용하는 여러 도메인이 있습니다. 모든 페이지는 다음과 같은 기본 클래스에서 상속합니다. PageBaseSystem.Web.UI.Page에서 상속받습니다. 다음을 사용하여 : HttpContext.Current.Request.ServerVariables [ "HTTP_HOST"] 도메인이 무엇인지 확인한 다음이 도메인에 이 필요하고 모든 것이 잘 작동하는지 모든 정보를 얻으십시오.여러 웹 앉아 응용 프로그램 방문자 카운터

내 문제는 내가 세션을 기반으로 각 사이트마다 다른 방문자 카운터를 사용하고자 할 때 시작됩니다. Global.asax에는 글로벌 이벤트가 있기 때문에 : Session_Start Session_End 간단한 카운터는 모든 사이트의 모든 방문자를 함께 계산합니다. 다른 클래스의 Global.asax에 대한 코드를 작성하려고 시도하지만 그 클래스에서 PageBase (System.Web.UI.Page) 웹 사이트 정보를 얻지 못합니다.

어떤 아이디어가이 문제를 해결하기 위해 나는 매우 감사 할 것입니다

cheinan 나는 당신이하는 것과 같은 세션 내에서 다른 하나의 "사이트"에서 찾아 볼 수있는 것을 가정하고

답변

0

다른 세션에 생성되어 있습니다.

하지만 당신은 생각이 문제 여기

을 SOLV하는 방법 도중에 내게 준 때문에 난 당신에게 매우 감사하고 내가 무슨 짓을 : 내가 사전에 카운터 클래스를 만들었 "onlineList"각 사이트에 대해 내가 자동 CREAT했다 키 :

내 기본 페이지에
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);} 

그리고 마침내 내 Session_End에 내가 한 수를 적게 수행

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

감사 내 말 응 답

cheinan

에 대한 HALP 과 유감
0

하나의 세션 만 생성되었습니다.

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

그런 다음 세션 종료에 각각 기록 :

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

그런 다음 기본 페이지에서 다음 추가 :이 경우

, 당신은 당신의 세션에 다음을 추가 할 필요가 방문한 호스트. 나는 동일한 세션 내에서 다른 하나의 "사이트"에서 각 사이트를 탐색 할 수없는 오전

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

     } 
} 
관련 문제