Plans des sites ASP.NET
Question
Quelqu'un a-t-il de l'expérience dans la création ASP.NET basé sur SQL fournisseurs de plans de site ?
J'ai le fichier XML par défaut web.sitemap
fonctionne correctement avec mon menu et Chemin du plan du site contrôles, mais j'aurai besoin d'un moyen pour les utilisateurs de mon site de créer et de modifier des pages de manière dynamique.
Je dois lier les autorisations d'affichage des pages à la norme ASP.NET
système d'adhésion également.
Pas de solution correcte
Autres conseils
La version Jeff Prosise du magazine MSDN fonctionne plutôt bien, mais elle présente quelques défauts :
AddNode
panique avec les liens vers des sites externes sur votre menu (www.google.com, etc.)
Voici ma solution dans 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
la mise en cache est cool, mais si vous ne voulez pas accéder à la base de données à chaque chargement de votre menu (pour vérifier si la dépendance a changé) et que vos menus ne changent pas très souvent, alors pourquoi ne pas utiliser HttpRuntime.Cache
plutôt?
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;
}
}