wcf - 如何使用 Sitecore.Data.Serialization.Manager.LoadItem(path,LoadOptions) 将项目恢复到 Sitecore?

标签 wcf serialization sitecore

我正在尝试使用 sitecore API 序列化和恢复 sitecore 项目。我创建了一个 WCF 应用程序来检索给定 ID 或 sitecore 路径 (/sitecore/content/home) 的项目名称,检索子项目名称的列表,这些项目的名称给定了 id 或路径。我还可以序列化内容树。

    public void BackupItemTree(string id)
    {
        Database db = Sitecore.Configuration.Factory.GetDatabase("master");
        Item itm = db.GetItem(id);

        Sitecore.Data.Serialization.Manager.DumpTree(itm);
    }

上面的代码效果很好。运行后可以看到content tree已经序列化了。

但是,当我尝试使用以下方法恢复序列化项目时:

    public void RestoreItemTree(string path)
    {
        try
        {
            using (new Sitecore.SecurityModel.SecurityDisabler())
            {
                Database db = Sitecore.Configuration.Factory.GetDatabase("master");
                Data.Serialization.LoadOptions opt = new Data.Serialization.LoadOptions(db);
                opt.ForceUpdate = true;

                Sitecore.Data.Serialization.Manager.LoadItem(path, opt);
                //Sitecore.Data.Serialization.Manager.LoadTree(path, opt);
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

使用这段代码我没有得到任何错误。它运行,但如果我检查 SiteCore,它什么也没做。我已经使用 Office Core 示例进行了测试。我发送的路径可能是问题所在:

C:\inetpub\wwwroot\sitecoretest\Data\serialization\master\sitecore\content\Home\Standard-Items\Teasers\Our-Clients.item

C:\inetpub\wwwroot\sitecorebfahnestockinet\Data\serialization\master\sitecore\content\Home\Standard-Items\Teasers\Our-Clients

似乎两者都没有做任何事情。我更改了项目的预告片标题,并试图恢复到之前的状态,但每次更改仍然存在。

由于 SiteCore 文档非常有限,我们将不胜感激。

最佳答案

您始终可以使用 Reflector 检查 Sitecore 代码的工作方式,当您在后端单击“Revert Item”时会调用以下方法:

protected virtual Item LoadItem(Item item, LoadOptions options)
{
    Assert.ArgumentNotNull(item, "item");
    return Manager.LoadItem(PathUtils.GetFilePath(new ItemReference(item).ToString()), options);
}

在 LoadOptions 中,您可以指定是要覆盖(“还原项目”)还是仅更新(“更新项目”)。

有关详细信息,请参阅 Sitecore.Shell.Framework.Commands.Serialization.LoadItemCommand

关于wcf - 如何使用 Sitecore.Data.Serialization.Manager.LoadItem(path,LoadOptions) 将项目恢复到 Sitecore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8363016/

相关文章:

c# - 启用基本和 Windows 身份验证

asp.net - WCF 性能与简单的 ASP.NET HttpHandler

sitecore - Sitecore 中的电子邮件地址作为用户名

wcf - 我需要将哪些 WCF 客户端文件 checkin SVN

java - 如何反序列化字节数组 block 而不放入一个大数组

python - 将 Python 列表传递给 WCF 服务

c# - 列表项的条件 XML 序列化

passwords - 将正则表达式添加到 Sitecore 8 中的密码复杂性

javascript - 通过 javascript 使用 Sitecore 发布表单

c# - 在单个操作中启用多个 HTTP 方法?