Tracking Users
Hej eksperter.Jeg ønsker at kunne se hvilke personer der er online på min website. Jeg har fulgt følgende artikel:
http://www.eksperten.dk/spm/614674
Jeg får dog følgende fejl efter at have fulgt vejledningen og kører TraceUsers.aspx:
System.NullReferenceException: Object reference not set to an instance of an object. at TraceUsers.Page_Load(Object sender, EventArgs e) in c:\...\TraceUsers.aspx.cs:line 26
Koden til denne fil er vist herunder og det går vist galt når denne linie udføres: HtmlTable tblUserInfo = (HtmlTable)this.FindControl("tblUserInfo");
tblUserInfo bliver ikke sat og er null. Hvordan kan det mon være?
public partial class TraceUsers : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label lblErrors;
protected System.Web.UI.HtmlControls.HtmlTable tblUserInfo;
protected void Page_Load(object sender, EventArgs e)
{
try
{
HtmlTableRow tr;
HtmlTableCell td;
//Get the already defined table(server) control
HtmlTable tblUserInfo = (HtmlTable)this.FindControl("tblUserInfo");
tblUserInfo.Align = "center";
tblUserInfo.Border = 2;
tblUserInfo.BorderColor = "Blue";
tblUserInfo.BgColor = "lemonchiffon";
tblUserInfo.CellPadding = 5;
tr = new HtmlTableRow();
tr.BgColor = "Blue";
tr.Attributes.Add("style", "COLOR:Black;FONT-WEIGHT:bold");
td = new HtmlTableCell();
td.InnerHtml = "User Name";
tr.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = "Session ID";
tr.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = "Start Time";
tr.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = "Duration(hh:mm:ss)";
tr.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = "Last Visited";
tr.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = "Machine Name";
tr.Cells.Add(td);
tblUserInfo.Rows.Add(tr);
IDictionaryEnumerator CacheEnum = Cache.GetEnumerator();
int intCount = 0;
while (CacheEnum.MoveNext())
{
UserInfo uInfoCacheItem = (UserInfo)CacheEnum.Entry.Value;
tr = new HtmlTableRow();
if ((intCount % 2) == 1)
{
tr.BgColor = "LightCyan";
}
td = new HtmlTableCell();
td.InnerHtml = uInfoCacheItem.UserName;
tr.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = uInfoCacheItem.SessionID;
tr.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = uInfoCacheItem.StartTime;
tr.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = uInfoCacheItem.Duration;
tr.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = uInfoCacheItem.LastPageVisited;
tr.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = uInfoCacheItem.MachineName;
tr.Cells.Add(td);
tblUserInfo.Rows.Add(tr);
intCount += 1;
tblUserInfo.Visible = true;
}
}
catch (Exception ex)
{
//TODO:
Label1.Text = ex.ToString();
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}