错误消息:"XmlSiteMapProvider is not initialized. Call Initialize() method first"



的问题是,我有一个覆盖BuildSiteMap()函数在一个类EditableSiteMapProvider,这是用来编辑Sitemap通过删除或添加新的节点。当我做base.BuildSiteMap();,它给了我一个错误"XmlSiteMapProvider没有初始化。首先调用Initialize()方法。

public override SiteMapNode BuildSiteMap()
    {
        SiteMapNode result = base.BuildSiteMap();
        //if (_loadFileNodes())
        //{
        //    lock(objLock)
        //    {
        //        base.Clear();
        //        result = base.BuildSiteMap();
        //        _dataFixInProgress = false;   
        //    }
        //}
        if (!_dataFixInProgress)// && !_dataIsFixed)
        {

这个函数从Refresh()函数调用,如下所示:

public void Refresh(){
        Clear();
        this._loadFileNodes();
        BuildSiteMap();
    }

这两个函数在EditableSiteMapProvider类中,我使用这个函数从另一个页面(如files)刷新站点地图。它用于将文件上传到数据库,并在导航栏上显示其名称。因此,为了做到这一点,我通过调用files.aspx.cs的Page Load上的刷新函数来刷新站点地图,该函数查看上传的所有新文件,并从站点地图中添加或删除文件链接。

protected void Page_Load(object sender, EventArgs e)
{

    DevExpress.Web.ASPxSiteMapControl.ASPxSiteMapControl smc = (DevExpress.Web.ASPxSiteMapControl.ASPxSiteMapControl)this.Master.FindControl("ASPxSiteMapControl1");
    Proj.Web.EditableXmlSiteMapProvider sitemap = new Proj.Web.EditableXmlSiteMapProvider();
    sitemap.Refresh();
}

根据MSDN,似乎在使用SiteMapProvider实例之前必须初始化。在调用BuildSiteMap()之前,是否在实例上调用Initialize ?

相关内容

  • 没有找到相关文章

最新更新