public virtual async Task <ActionResult> Index() { var items = new List <SitemapItem>(); var languagesList = _languagesService.GetAsEnumerable().Where(p => p.Published) .OrderByDescending(p => p.IsDefault); foreach (var language in languagesList) { items.Add(new SitemapItem( Url.Action("Index", "Home", new { lang = language.IsoCode }, Request.Url.Scheme), DateTime.Now, SitemapChangeFrequency.Daily, 1)); items.AddRange((await _pagesService.GetAsEnumerableAsync()).Where(p => p.Published).Select(page => new SitemapItem( Url.Action("Index", "Page", new { slug = page.Slug, lang = language.IsoCode }, Request.Url.Scheme), DateTime.Now, SitemapChangeFrequency.Daily, 1))); items.AddRange((await _tagsService.GetAsEnumerableAsync()).Select(tag => new SitemapItem( Url.Action("Tag", "Search", new { tag = tag.GetLocalized(x => x.Tag, language.Id), lang = language.IsoCode }, Request.Url.Scheme), DateTime.Now, SitemapChangeFrequency.Daily, 0.9)).DistinctBy(p => p.Url)); items.AddRange((await _categoriesService.GetAsEnumerableAsync()).Select(category => new SitemapItem( Url.Action("FilterByCategory", "Product", new { slug = category.Slug, lang = language.IsoCode }, Request.Url.Scheme), DateTime.Now, SitemapChangeFrequency.Daily, 0.8))); items.AddRange((await _categoriesService.GetAsEnumerableAsync()).Select(category => new SitemapItem( Url.Action("FilterByCategory", "Blog", new { slug = category.Slug, lang = language.IsoCode }, Request.Url.Scheme), DateTime.Now, SitemapChangeFrequency.Daily, 0.8))); foreach (var post in _postService.GetNewItemsForSiteMap()) { Uri url = new Uri(Url.Action("Index", "Search", new { lang = language.IsoCode, OrderBy = SearchResultSortType.Score, SearchPlace = SearchPlace.Title, Query = post.Title }, Request.Url.Scheme)); if (post.PostType == PostType.BlogPost) { url = new Uri(Url.Action("Post", "Blog", new { slug = post.Slug, lang = language.IsoCode }, Request.Url.Scheme)); } if (post.PostType == PostType.Product) { url = new Uri(Url.Action("Index", "Product", new { slug = post.Slug, lang = language.IsoCode }, Request.Url.Scheme)); } items.Add(new SitemapItem(url.ToString(), post.LastUpDate ?? post.PublishDate, SitemapChangeFrequency.Weekly, 0.7)); } } return(Content(_sitemapGenerator.GenerateSiteMap(items).ToString(), "text/xml", Encoding.UTF8)); }