質問

特定のasp.net Webサイトのsitemap.xmlをオンザフライで生成しようとしています。

いくつかの解決策を見つけました。

  1. チヌクウェブ
  2. サーボプロジェクト
  3. ニュートンキング

Chinookwebs はうまく機能していますが、現在は少し非アクティブなようです。各ページの「priority」タグと「changefreq」タグをパーソナライズすることは不可能であり、それらはすべて構成ファイルから同じ値を継承します。

皆さんはどのようなソリューションを使用していますか?

役に立ちましたか?

解決

通常、使用するのは HTTPハンドラー このために。というご要望を受けて…

http://www.yoursite.com/sitemap.axd

...ハンドラーは、フォーマットされた XML サイトマップで応答します。そのサイトマップがオンザフライで生成されるか、データベースから生成されるか、または他の方法で生成されるかは、HTTP ハンドラーの実装によって異なります。

おおよそ次のようになります。

void IHttpHandler.ProcessRequest(HttpContext context)
{
    //
    // Important to return qualified XML (text/xml) for sitemaps
    //
    context.Response.ClearHeaders();
    context.Response.ClearContent();
    context.Response.ContentType = "text/xml";
    //
    // Create an XML writer
    //
    XmlTextWriter writer = new XmlTextWriter(context.Response.Output);
    writer.WriteStartDocument();
    writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
    //
    // Now add entries for individual pages..
    //
    writer.WriteStartElement("url");
    writer.WriteElementString("loc", "http://www.codingthewheel.com");
    // use W3 date format..
    writer.WriteElementString("lastmod", postDate.ToString("yyyy-MM-dd"));
    writer.WriteElementString("changefreq", "daily");
    writer.WriteElementString("priority", "1.0");
    writer.WriteEndElement();
    //
    // Close everything out and go home.
    //
    result.WriteEndElement();
    result.WriteEndDocument();
    writer.Flush();
}

このコードは改善することができますが、それが基本的な考え方です。

他のヒント

サイトマップを生成するカスタム ハンドラー。

ASP.NET MVC を使用すると、.NET XML 生成ライブラリを使用して簡単なコードを作成し、それを XML コントロールを含むビュー ページに渡すだけです。コードビハインドでは、コントロールを ViewData に結び付けました。これは、ビュー ページのデフォルトの動作をオーバーライドして、別のヘッダーを表示しているようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top