private static void ContextBeginRequest(object sender, EventArgs e) { var application = (HttpApplication) sender; string requestedUrl = application.Request.Url.ToString(); if (string.IsNullOrWhiteSpace(requestedUrl)) { return; } // TODO: Set Application Name from web.config string applicationName = "www.greina.de"; string cookieName = string.Format("Greina_{0}", applicationName); Guid visitorId; HttpCookie cookie = application.Request.Cookies[cookieName]; if (cookie != null) { visitorId = Guid.Parse(cookie["VisitorId"]); using (ISession session = SessionFactoryService.SessionFactory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { try { Guid requestId = Guid.NewGuid(); var request = new Request { Id = requestId, CreatedOn = DateTime.UtcNow, RequestedUrl = requestedUrl, UserAgent = application.Request.UserAgent, UserHostAddress = application.Request.UserHostAddress, UserHostName = application.Request.UserHostName, UserLanguages = application.Request.UserLanguages, UrlRefferer = application.Request.UrlReferrer != null ? application.Request.UrlReferrer.ToString() : string.Empty }; Visitor visitor = (from x in session.Query<Visitor>() where x.Id == visitorId select x).FirstOrDefault(); if (visitor.Requests == null) { visitor.Requests = new List<Request>(); } session.SaveOrUpdate(request); visitor.Requests.Add(session.Get<Request>(requestId)); session.SaveOrUpdate(visitor); transaction.Commit(); } catch (Exception) { transaction.Rollback(); application.Request.Cookies.Remove(applicationName); throw; } } } } else { cookie = new HttpCookie(cookieName); visitorId = Guid.NewGuid(); cookie["VisitorId"] = visitorId.ToString(); cookie.Expires = DateTime.MaxValue; application.Response.Cookies.Add(cookie); using (ISession session = SessionFactoryService.SessionFactory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { try { Guid requestId = Guid.NewGuid(); var request = new Request { Id = requestId, CreatedOn = DateTime.UtcNow, RequestedUrl = requestedUrl, UserAgent = application.Request.UserAgent, UserHostAddress = application.Request.UserHostAddress, UserHostName = application.Request.UserHostName, UserLanguages = application.Request.UserLanguages, UrlRefferer = application.Request.UrlReferrer != null ? application.Request.UrlReferrer.ToString() : string.Empty }; var visitor = new Visitor {Id = visitorId, CreatedOn = DateTime.UtcNow}; if (visitor.Requests == null) { visitor.Requests = new List<Request>(); } session.SaveOrUpdate(request); visitor.Requests.Add(session.Get<Request>(requestId)); session.SaveOrUpdate(visitor); transaction.Commit(); } catch (Exception) { transaction.Rollback(); application.Request.Cookies.Remove(applicationName); throw; } } } } }
public void Save(Request request) { throw new NotImplementedException(); }