public void ProcessRequest(HttpContextBase context) { var url = context.Request.Url.AbsolutePath; if (string.IsNullOrEmpty(config.ResourcePhysicalPath)) { config.ResourcePhysicalPath = hostingEnvironment.MapPath(config.ResourceVirtualPath); } RRTracer.Trace("Beginning to serve {0}", url); var sig = uriBuilder.ParseSignature(url); if (sig == Guid.Empty.RemoveDashes()) { return; } var etag = context.Request.Headers["If-None-Match"]; etag = etag == null ? string.Empty : etag.Replace("\"", ""); if (sig == etag || store.SendContent(url, context.Response)) { context.Response.Cache.SetETag(string.Format(@"""{0}""", sig)); context.Response.Cache.SetCacheability(HttpCacheability.Public); context.Response.Expires = 60 * 24 * 360; //LITTLE under A YEAR if (sig == etag) { context.Response.StatusCode = 304; } else if (url.EndsWith(".css", StringComparison.OrdinalIgnoreCase)) { context.Response.ContentType = "text/css"; } else if (url.EndsWith(".js", StringComparison.OrdinalIgnoreCase)) { context.Response.ContentType = "application/x-javascript"; } else if (url.EndsWith(".png", StringComparison.OrdinalIgnoreCase)) { context.Response.ContentType = "image/png"; } if (context.ApplicationInstance != null) { context.ApplicationInstance.CompleteRequest(); } } RRTracer.Trace("Finished serving {0}", url); }
public void ProcessRequest(HttpContextBase context) { var url = context.Request.Url.AbsolutePath; url = url.EndsWith("/") ? url : url + "/"; if (string.IsNullOrEmpty(configuration.ResourcePhysicalPath)) { configuration.ResourcePhysicalPath = hostingEnvironment.MapPath(configuration.ResourceVirtualPath); } var user = context.User == null ? string.Empty : context.User.Identity.Name; if ((configuration.AuthorizedUserList.AllowsAnonymous() || configuration.AuthorizedUserList.Contains(user)) && ipFilter.IsAuthorizedIpAddress(context)) { if (url.ToLowerInvariant().Contains("/flushfailures/")) { queue.ClearFailures(); RRTracer.Trace("Failures Cleared"); } else { var key = uriBuilder.ParseKey(url.ToLower().Replace("/flush/rrflush.aspx/", "-flush")); if (key == Guid.Empty) { key = uriBuilder.ParseKey(url.ToLower().Replace("/flush/", "-flush")); } store.Flush(key); RRTracer.Trace("{0} Flushed {1}", user, key); } if (HttpContext.Current != null) { context.Response.Redirect(string.Format("{0}/dashboard", configuration.ResourceAbsolutePath)); } } else { context.Response.StatusCode = 401; } }