ASP.NET карты сайтов

Есть ли у кого-нибудь опыт создания на основе SQL ASP.NET провайдеры карт сайтов?

У меня есть XML-файл по умолчаниюweb.sitemap, работающий должным образом с элементами управления Menu и SiteMapPath, но мне понадобится Способ для пользователей моего сайта создавать и изменять страницы динамически.

Мне нужно связать разрешения на просмотр страниц со стандартной ASP.NETсистемой членства.

1 ответ

  1. Версия Jeff Prosise от MSDN magazine работает довольно хорошо, но имеет несколько недостатков:

    AddNode freaks out со ссылками на внешние сайты в меню (www.google.com, etc.)

    Вот мое исправление 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 кэширование-это круто, но если вы не хотите совершать поездку в БД каждый раз, когда ваше меню загружается (чтобы проверить, не изменилась ли зависимость), и ваши меню не меняются очень часто, то почему бы не использовать 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;
        }
    }