【问题标题】:Tridion Core Service Update Error - ContinuedTridion 核心服务更新错误 - 续
【发布时间】:2013-01-24 18:28:38
【问题描述】:

在我们正在进行的重构练习中,我们必须更改选定网站的页面模板。大多数页面已本地化并通过以下代码更新其页面模板,但对于少数页面,我们收到以下错误:

“名称、文件名对于以下类型的项目必须是唯一的:其结构组及其蓝图上下文中的页面。来源或冲突来源 tcm:121:3456-64”。

我检查了正在处理的当前页面和错误中提到的页面,它们都有唯一的名称和文件名。任何想法可能导致问题?

附:我能够通过发布到我的问题的优秀建议来解决早期的错误。期待这次会有类似的回应。

try
{
pData = client.Read(page.Attribute("ID").Value, null) as PageData;
//Localize Page
if (!(bool)pData.BluePrintInfo.IsLocalized)
{
    client.Localize(pData.Id, new ReadOptions());
    if (dTemplateIDs.ContainsKey(pData.PageTemplate.IdRef.ToString()))
    {
        pData.IsPageTemplateInherited = false;
        pData.PageTemplate.IdRef = dTemplateIDs[pData.PageTemplate.IdRef];
        client.Update(pData, new ReadOptions());
    }
}
}
catch (Exception ex)
{
 Console.WriteLine("Error Inner " + ex.Message);
} 

【问题讨论】:

  • “期待这次类似的回应。”很高的期望! :)
  • 对不起,我没有早点潜伏在 SO 上,以便像上次一样快速回答您的问题! :)
  • 问得好,您是否有兴趣提交Area 51 Tridion specific proposal。如果有时间,请使用同一个 SO 帐户注册。

标签: tridion tridion-2011


【解决方案1】:

您的代码中有一些错误,不确定它们是否调用异常,但无论如何都值得修复。首先,您并没有真正阅读该页面,因为您阅读时的ReadOptionsnull。其次,您应该从Localize 方法获取您的页面,然后更新页面的本地化版本。像这样:

try
{
    // You need read options here
   pData = (PageData) client.Read(page.Attribute("ID").Value, new ReadOptions()); 
   //Localize Page
   if (!(bool)pData.BluePrintInfo.IsLocalized)
   {
    // Get localized page here      
    pData = (PageData) client.Localize(pData.Id, new ReadOptions());
    if (dTemplateIDs.ContainsKey(pData.PageTemplate.IdRef.ToString()))
    {
        pData.IsPageTemplateInherited = false;
        pData.PageTemplate.IdRef = dTemplateIDs[pData.PageTemplate.IdRef];
        // You do not need read options here
        client.Update(pData, null);
    }
}
}
catch (Exception ex)
{
 Console.WriteLine("Error Inner " + ex.Message);
}  

最后,如果这一切都没有帮助,你能发布堆栈跟踪吗?

【讨论】:

    猜你喜欢
    • 2013-01-07
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 2012-04-21
    • 2012-09-11
    • 1970-01-01
    • 2013-01-21
    • 2012-03-20
    相关资源
    最近更新 更多