Пример #1
0
        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();
        }
    }