Pergunta
Alguém tem experiência em criar ASP.NET baseado em SQL provedores de mapas de sites?
Eu tenho o arquivo XML padrão web.sitemap
funcionando corretamente com meu Menu e SiteMapPath controles, mas precisarei de uma maneira para os usuários do meu site criarem e modificarem páginas dinamicamente.
Preciso vincular as permissões de visualização de página ao padrão ASP.NET
sistema de adesão também.
Nenhuma solução correta
Outras dicas
A versão de Jeff Prosise da revista MSDN funciona muito bem, mas tem algumas falhas:
AddNode
enlouquece com links para sites externos em seu menu (www.google.com, etc.)
Aqui está minha solução 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
cache é legal, mas se você não quiser fazer uma viagem ao banco de dados toda vez que seu menu for carregado (para verificar se a dependência mudou) e seus menus não mudam com muita frequência, então por que não usar HttpRuntime.Cache
em vez de?
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;
}
}