Please begin by reading Part 1.
Now, create a table in the database and update the Entity Framework model. It may look like the image below:
SessionID – string, Max length 32, PK
Started – datetime
Ended – datetime, NULL allowed
IP – string, Max length 15
Country – string, Max length 32
Let’s create a helper class (SessionStatisticsService) to insert and update database records.
public void SessionStart(HttpContext Context)
{
try
{
SessionStatistics sessionStatistics = new SessionStatistics();
sessionStatistics.SessionID = Context.Session.SessionID;
sessionStatistics.Started = DateTime.Now;
sessionStatistics.Ended = null;
sessionStatistics.IP = IPToCountryService.GetIP(Context.Request.ServerVariables);
sessionStatistics.Country = “Unknown Country”;
string knownCountry;
if (IPToCountryService.GetCountry(sessionStatistics.IP, out knownCountry))
{
sessionStatistics.Country = knownCountry;
}
database.SessionStatistics.AddObject(sessionStatistics);
database.SaveChanges();
}
catch
{
// Do nothing here
}
}
public void SessionEnd(HttpSessionState Session)
{
SessionStatistics sessionStatistics = database.SessionStatistics.Where(x => x.SessionID == Session.SessionID).SingleOrDefault();
if (sessionStatistics != null)
{
sessionStatistics.Ended = DateTime.Now;
database.SaveChanges();
}
}
Will call the appropriate methods from a Global.asax.cs file.
protected void Session_Start(object sender, EventArgs e)
{
SessionStatisticsService sessionStatisticsService = new SessionStatisticsService();
sessionStatisticsService.SessionStart(Context);
}
protected void Session_End(object sender, EventArgs e)
{
SessionStatisticsService sessionStatisticsService = new SessionStatisticsService();
sessionStatisticsService.SessionEnd(Session);
}
To be continued…
Looking for quality Silverlight Hosting? Look no further than Arvixe Web Hosting!