public XmlSitemap2Controller() { var builder = new XmlSitemapFeedStrategyBuilder(); var xmlSitemapFeedStrategy = builder .SetupXmlSitemapProviderScan(scan => scan.IncludeAssembly(this.GetType().Assembly)) .AddNamedFeed("default", feed => feed.WithMaximumPageSize(5000).WithContent(content => content.Image().Video())) .Create(); var outputCompressor = new HttpResponseStreamCompressor(); this.xmlSitemapFeedResultFactory = new XmlSitemapFeedResultFactory(xmlSitemapFeedStrategy, outputCompressor); }
protected void Page_Load(object sender, EventArgs e) { // Build feeds for XML sitemap var xmlSitemapFeedStrategy = new XmlSitemapFeedStrategyBuilder() .SetupPageNameTempates(templates => templates .WithDefaultFeedRoot("XmlSitemap.aspx?feedName={feedName}&page={page}") .WithDefaultFeedPaged("XmlSitemap.aspx?feedName={feedName}&page={page}") .WithNamedFeedRoot("XmlSitemap.aspx?feedName={feedName}&page={page}") .WithNamedFeedPaged("XmlSitemap.aspx?feedName={feedName}&page={page}")) .AddDefaultFeed() .AddNamedFeed("google", feed => feed.WithContent(c => c.Image().Video())) // Optional - add news feed (will be at ~/XmlSitemap.aspx?feedName=news) .AddNamedFeed("news", feed => feed.WithContent(c => c.News())) // Optional - add mobile feed (will be at ~/XmlSitemap.aspx?feedName=mobile) .AddNamedFeed("mobile", feed => feed.WithContent(c => c.Mobile()).WithMaximumPageSize(10000)) .Create(); var xmlSitemapFeed = xmlSitemapFeedStrategy.GetFeed(this.FeedName); if (xmlSitemapFeed != null) { var outputCompressor = new HttpResponseStreamCompressor(); var response = HttpContext.Response; response.Clear(); // Output content type response.ContentType = "text/xml"; using (var stream = outputCompressor.Compress(HttpContext)) { if (!xmlSitemapFeed.WritePage(this.PageNumber, stream)) { context.Response.Clear(); //Return 404 not found context.Response.StatusCode = (int)System.Net.HttpStatusCode.NotFound; context.Response.StatusDescription = "Page Not Found"; } } response.End(); } }