Sql ASP.NET网站地图

Sql ASP.NET网站地图,sql,asp.net,xml,sitemap,Sql,Asp.net,Xml,Sitemap,是否有人有创建基于SQL的ASP.NET站点地图提供程序的经验 我有默认的XML文件web.sitemap可以与我的菜单和SiteMapPath控件一起正常工作,但是我需要一种方法让我的站点的用户动态创建和修改页面 我还需要将页面查看权限绑定到标准的ASP.NET会员系统中。MSDN杂志的Jeff Prosise版本运行得很好,但它有一些缺陷: AddNode在你的菜单(www.google.com等)上链接到外部网站,让人抓狂 这是我在BuildSiteMap()中的修复方法。: SQLDep

是否有人有创建基于SQL的ASP.NET站点地图提供程序的经验

我有默认的XML文件
web.sitemap
可以与我的菜单和SiteMapPath控件一起正常工作,但是我需要一种方法让我的站点的用户动态创建和修改页面


我还需要将页面查看权限绑定到标准的
ASP.NET
会员系统中。

MSDN杂志的Jeff Prosise版本运行得很好,但它有一些缺陷:

AddNode
在你的菜单(www.google.com等)上链接到外部网站,让人抓狂

这是我在
BuildSiteMap()中的修复方法。

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;
    }
}
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;
    }
}