質問

作成経験のある人はいますか SQLベースのASP.NET サイトマッププロバイダー?

デフォルトのXMLファイルがあります web.sitemap 私のメニューで適切に動作し、 サイトマップパス コントロールは必要ですが、サイトのユーザーがページを動的に作成および変更できる方法が必要です。

ページの表示権限を標準に結び付ける必要があります ASP.NET 会員制度も。

正しい解決策はありません

他のヒント

MSDN マガジンの Jeff Prosise バージョンは非常にうまく機能しますが、いくつかの欠陥があります。

AddNode メニューに外部サイトへのリンクがあると異常をきたします (www.google.com など)

これが私の修正です BuildSiteMap():

SiteMapNode node = GetSiteMapNodeFromReader(reader);
string url = node.Url;
if (url.Contains(":"))
{
    string garbage = Guid.NewGuid().ToString();  // SiteMapNode needs unique URLs
    node.Url = "~/dummy_" + garbage + ".aspx";
    AddNode(node, _root);
    node.Url = url;
}
else
{
    AddNode(node, _root);
}

SQLDependency キャッシュは優れていますが、メニューがロードされるたびに (依存関係が変更されたかどうかを確認するために) DB にアクセスしたくない場合や、メニューがあまり変更されない場合は、使用しない手はありません。 HttpRuntime.Cache その代わり?

public override SiteMapNode RootNode
{
    get
    {
        SiteMapNode temp = (SiteMapNode)HttpRuntime.Cache["SomeKeyName"];
        if (temp == null)
        {
            temp = BuildSiteMap();
            HttpRuntime.Cache.Insert("SomeKeyName", temp, null, DateTime.Now.AddHours(1), Cache.NoSlidingExpiration);
        }
        return temp;
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top