Подтвердить что ты не робот

Карты сайта ASP.NET

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

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

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

4b9b3361

Ответ 1

Версия Jeff Prosise из журнала MSDN работает очень хорошо, но у нее есть несколько недостатков:

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