【问题标题】:Error message: "XmlSiteMapProvider is not initialized. Call Initialize() method first"错误消息:“XmlSiteMapProvider 未初始化。首先调用 Initialize() 方法”
【发布时间】:2011-09-06 16:28:42
【问题描述】:

问题是我在一个名为 EditableSiteMapProvider 的类中有一个覆盖 BuildSiteMap() 函数,该函数用于通过删除或添加新节点来编辑站点地图。当我执行 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.aspx,它用于将文件上传到数据库,数据库也会在导航栏上显示它们的名称。为此,我通过调用 files.aspx.cs 的页面加载上的刷新函数来刷新站点地图,该函数查看所有上传的新文件并从站点地图中添加或删除文件链接。

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();

}

【问题讨论】:

    标签: asp.net sitemapprovider server-error


    【解决方案1】:

    根据MSDN,看来必须先初始化 SiteMapProvider 的实例才能使用它。在调用 BuildSiteMap() 之前,您是否在实例上调用 Initialize?

    【讨论】:

    • 所以在调用刷新之前需要在files.aspx中初始化一下?
    • 我的理解是SiteMapProvider的每一个实例都必须先Initialized()才能使用。因此,您需要在任何实例化并使用它的页面上对其进行初始化。
    • 所以我不需要重写initialize方法,只需在files.aspx中刷新之前调用它?我需要传入哪些属性?
    猜你喜欢
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多