C# asp.net mvc中的sitemaps.xml

C# asp.net mvc中的sitemaps.xml,c#,asp.net-mvc,razor,sitemap,C#,Asp.net Mvc,Razor,Sitemap,我的网站有动态内容,正在创建新的链接 我的数据库有一个表,其中几乎包含所有添加的URL 因此,我的问题是拥有sitemaps.xml对我来说有多重要,是否有一种简单的方法来构建它,以便在生成新链接时,我可以将其标记到sitemap.xml文件的末尾?对于爬虫来说,能够更快、更准确地抓取您的站点是很重要的 您可以创建一个控制器,比如siteMapController,并在索引中添加以下内容 public ActionResult Index() { var xmlString =

我的网站有动态内容,正在创建新的链接

我的数据库有一个表,其中几乎包含所有添加的URL


因此,我的问题是拥有sitemaps.xml对我来说有多重要,是否有一种简单的方法来构建它,以便在生成新链接时,我可以将其标记到sitemap.xml文件的末尾?

对于爬虫来说,能够更快、更准确地抓取您的站点是很重要的

您可以创建一个控制器,比如siteMapController,并在索引中添加以下内容

 public ActionResult Index() {
        var xmlString =
            "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\">";

        xmlString +=
                "<url>" +
               "<loc>Your site</loc>" +
               "<changefreq>weekly</changefreq>" +
               "<priority>0.6</priority>" +
             "</url>" +
           "<url>" +
                    "<loc>Static Link of you site</loc>" + //you can add as many you want
                       "<changefreq>weekly</changefreq>" +
                       "<priority>0.6</priority>" +
                    "</url>" +
                    "<url>";


           //Dynamic links
            xmlString += "<url>" +
                         "<loc>Link of new item"</loc>" +
                         "<lastmod>" + DateTime.Now.ToString("yyyy-MM-dd") + "</lastmod>" +
                         "<changefreq>daily</changefreq>" +
                         "<priority>0.8</priority>" +
                         "</url>";
        }
        xmlString += "</urlset>";
        ViewData["siteMap"] = xmlString;
        return View();
    }
public ActionResult Index(){
变量xmlString=
"";
XML字符串+=
"" +
“您的站点”+
“每周”+
"0.6" +
"" +
"" +
“站点的静态链接”+//您可以添加任意数量的站点
“每周”+
"0.6" +
"" +
"";
//动态链接
xmlString+=“”+
“新项目的链接”+
“+DateTime.Now.ToString(“yyyy-MM-dd”)+”+
“每日”+
"0.8" +
"";
}
xmlString+=“”;
ViewData[“站点地图”]=xmlString;
返回视图();
}
将xml保存在服务器上,并通过此链接发布站点地图


希望这有帮助

对于爬虫来说,能够更快、更准确地抓取您的站点是很重要的

您可以创建一个控制器,比如siteMapController,并在索引中添加以下内容

 public ActionResult Index() {
        var xmlString =
            "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\">";

        xmlString +=
                "<url>" +
               "<loc>Your site</loc>" +
               "<changefreq>weekly</changefreq>" +
               "<priority>0.6</priority>" +
             "</url>" +
           "<url>" +
                    "<loc>Static Link of you site</loc>" + //you can add as many you want
                       "<changefreq>weekly</changefreq>" +
                       "<priority>0.6</priority>" +
                    "</url>" +
                    "<url>";


           //Dynamic links
            xmlString += "<url>" +
                         "<loc>Link of new item"</loc>" +
                         "<lastmod>" + DateTime.Now.ToString("yyyy-MM-dd") + "</lastmod>" +
                         "<changefreq>daily</changefreq>" +
                         "<priority>0.8</priority>" +
                         "</url>";
        }
        xmlString += "</urlset>";
        ViewData["siteMap"] = xmlString;
        return View();
    }
public ActionResult Index(){
变量xmlString=
"";
XML字符串+=
"" +
“您的站点”+
“每周”+
"0.6" +
"" +
"" +
“站点的静态链接”+//您可以添加任意数量的站点
“每周”+
"0.6" +
"" +
"";
//动态链接
xmlString+=“”+
“新项目的链接”+
“+DateTime.Now.ToString(“yyyy-MM-dd”)+”+
“每日”+
"0.8" +
"";
}
xmlString+=“”;
ViewData[“站点地图”]=xmlString;
返回视图();
}
将xml保存在服务器上,并通过此链接发布站点地图


希望对您有所帮助

您可以使用LINQ to XML从数据库创建XML站点地图,然后通过返回
内容(document.ToString(),“text/XML”)从操作返回站点地图
您可以使用LINQ to XML从数据库创建XML站点地图,然后通过返回
内容从操作返回站点地图(document.ToString(),“text/xml”)

如果您的站点上有20000个动态生成的页面,该怎么办?您是应该将它们全部包含在站点地图中,还是Google会忽略这么大的条目。此外,您通常应该避免通过字符串连接来构建XML。在最坏的情况下,可以直接写入响应流,或者使用XML API或StringBuilder。好的因此,这将为我提供一个位于的xml文件?问题是,当新创建的链接添加到数据库时,我是否必须重新提交整个xml文件?如果您的站点上有20000个动态生成的页面,该怎么办?您是应该将它们全部包含在站点地图中,还是Google会忽略如此大的条目。此外,您通常应该避免构建xml via字符串连接。在最坏的情况下,要么直接写入响应流,要么使用XML API或StringBuilder。好的,这将在处为我提供一个XML文件?问题是,当新创建的链接添加到数据库时,我是否必须重新提交整个XML文件?问题是我如何处理新添加的URL,因为我不需要它必须在爬虫每次点击时循环浏览所有URL。@拉克洛斯:你应该每次都循环浏览URL。这没什么错。如果你真的想,你可以在数据库发生更改时运行代码将文件写入磁盘,但我不推荐。如果我选择你的方式,你会在前一周显示吗s链接足够了吗?-在google中,仍然会有旧链接的记录。我可以在razor视图中填充xml而不是linq to xml吗?@raklos:不;你应该总是列出所有链接。在这里使用razor没有任何意义;使用linq to xml生成字符串会更容易。但是,如果你愿意,你可以。问题是怎么做我讨论新添加的URL,因为我不希望每次爬虫点击它时它都必须遍历所有URL。@raklos:你应该每次遍历URL。这没什么错。如果你真的想,你可以在数据库更改时运行将文件写入磁盘的代码,但我不建议这样做。如果我选择用你的方式,只显示前几周的链接就足够了吗?-在谷歌中,仍然会有旧链接的记录。我可以在razor视图中填充xml而不是linq to xml吗?@raklos:不;你应该总是列出所有链接。在这里使用razor没有任何意义;使用linq to xml生成字符串会更容易。如何如果你愿意,你永远都可以。