【问题标题】:How to generate dynamic sitemap in asp.net?如何在 asp.net 中生成动态站点地图?
【发布时间】:2014-02-16 08:48:39
【问题描述】:

我正在尝试为我的所有动态页面构建站点地图。我尝试通过使用 Web 表单并在函数后面编写代码来生成它。但是在 Google Webmaster 上提交页面时,它给了我一个错误- 1. 我们在尝试访问您的站点地图时遇到错误。请确保您的站点地图遵循我们的指南,并且可以在您提供的位置访问,然后重新提交。 2. 站点地图是 HTML - 您的站点地图似乎是 HTML 页面。请改用支持的站点地图格式。 这就是我正在尝试的-

protected void Page_Load(object sender, EventArgs e)
    {
        Response.Clear();
        Response.ContentType = "text/xml";
        using (XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Encoding.UTF8))
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("urlset");
            writer.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");
            writer.WriteStartElement("url");
            writer.WriteElementString("loc","http://www.mywebsite.com/");
            writer.WriteElementString("changefreq","weekly");
            writer.WriteElementString("priority","1.0");
            writer.WriteEndElement();

            string connect = WebConfigurationManager.ConnectionStrings["connectionName"].ConnectionString;
            using (SqlConnection conn = new SqlConnection(connect))
            {
                using(SqlCommand cmd1=new SqlCommand("select attr1,attr2,substring(attr3,0,300) as attr31, attr4 from tblname order by attr1",conn))
                {
                    cmd1.CommandType=CommandType.Text;
                    conn.Open();
                    using (SqlDataReader rdr1=cmd1.ExecuteReader())
                    {
                        while(rdr1.Read())
                        {
                            writer.WriteElementString("loc","http://www.mywebsite.com/page1.aspx");
                            if (rdr1[1] != DBNull.Value)
                                writer.WriteElementString("lastmod",String.Format("{0:yyyy-MM-dd}",rdr1[1]));
                            writer.WriteElementString("changefreq","daily");
                            writer.WriteElementString("priority","0.80");
                            writer.WriteEndElement();
                        }
                        rdr1.NextResult();
                        while (rdr1.Read())
                        {
                            writer.WriteElementString("loc","http://www.mywebsite.com/page2.aspx?id="+rdr1[0].ToString());
                            if (rdr1[1] != DBNull.Value)
                                writer.WriteElementString("lastmod",String.Format("{0:yyyy-MM-dd}",rdr1[1]));
                            writer.WriteElementString("changefreq","daily");
                            writer.WriteElementString("priority","0.80");
                            writer.WriteEndElement();
                        }
                        writer.WriteEndElement();
                        writer.WriteEndDocument();
                        writer.Flush();
                    }
                    Response.End();
                }
            }
        }
    }

我的 aspx 页面是-

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="sitemap.aspx.cs" Inherits="sitemap" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    </div>
    </form>
</body>
</html>

请指导我哪里做错了。?

【问题讨论】:

  • 你可能想在这个问题上标记“asp.net”
  • @TruongSinh 编辑了标签部分。但是你对这个问题有什么想法吗?

标签: html asp.net xml sitemap google-search-console


【解决方案1】:

您的 aspx 页面清楚地将 &lt;html …&gt; 声明为第一个元素。

我认为您需要删除 aspx 文件中除第 1 行之外的所有内容。 您需要确保站点地图可在 domain/sitemap.xml 访问。

如果您需要进一步的帮助,请下载并提供 sitemap.xml 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多