public static void ServeSitemap(string domainDataCode) { var request = HttpContext.Current.Request; var response = HttpContext.Current.Response; try { var lastModDate = Sitemap.GetLastCreated(domainDataCode).AsUtc(); if (lastModDate == null) // base code, return 404 { throw new VoteException("No sitemap for {0}", domainDataCode); } // First check if the sitemap has been modified var ifModifiedSinceHeader = request.Headers["If-Modified-Since"]; DateTime ifModifiedSince; var isModified = true; // assume modified unless we prove otherwise if (!string.IsNullOrWhiteSpace(ifModifiedSinceHeader) && DateTime.TryParse(ifModifiedSinceHeader, out ifModifiedSince)) { isModified = false; // change our assumption // If mod date is greater, we need to check for insignificant (< 1 sec) // difference, because of lossy date conversions. if (lastModDate > ifModifiedSince) { isModified = (lastModDate - ifModifiedSince) > TimeSpan.FromSeconds(1); } } ServeSitemapContent(domainDataCode, lastModDate.Value, isModified); } catch (VoteException ex) { response.Write(ex.Message); response.StatusCode = 404; } catch (Exception) { response.Write("Sitemap not available"); response.StatusCode = 404; } finally { response.End(); } }