【问题标题】:How to enable a user for impersonation in Tridion 2009?如何在 Tridion 2009 中启用用户模拟?
【发布时间】:2012-05-10 02:01:05
【问题描述】:

我正在尝试使用 Tridion 的 ContentManagment API 来检索分类类别和关键字,但我遇到了拒绝访问错误。

我有以下方法:

public Dictionary<string, string> GetKeywords(string tcmUri)
{
     var result = new Dictionary<string, string>();

     try 
     {
         // _settings.ImpersonationUser = "MYDOMAIN/myusername"
         using (var session = new Session(_settings.ImpersonationUser))
         {
             var category = new Category(new TcmUri(tcmUri), session);
             var keywords = category.GetKeywords(new Filter());

             if (keywords != null && keywords.Count > 0)
             {
                 foreach (var keyword in keywords)
                 {
                     result.Add(keyword.Id.ToString(), keyword.Title);
                 }
             }
         }
     }
     catch (Exception ex)
     {
         Logger.Log.Error(
             "Failed to retrieve keywords for '{0}'.".FormatWith(tcmUri), ex);
     }

     return result;
}

我在_settings.ImpersonationUser 中获得的用户有权访问 Tridion Content Manager,被配置为管理员,并已在“SDL Tridion Content Manager 配置”管理单元中添加到模拟用户。

我得到的错误如下:

System.Runtime.InteropServices.COMException (0x80040302):
<?xml version="1.0"?>
<tcm:Error xmlns:tcm="http://www.tridion.com/ContentManager/5.0" 
    ErrorCode="80040302" Category="16" Source="Kernel" Severity="2">
    <tcm:Line ErrorCode="80040302" Cause="true" MessageID="16226">
        <![CDATA[Access denied for the user MYDOMAIN\myuser.]]
        <tcm:Token>MYDOMAIN\myuser</tcm:Token>
    </tcm:Line>
    <tcm:Details>
        <tcm:CallStack>
            <tcm:Location>SystemBLST.GetUserContext</tcm:Location>
            <tcm:Location>SystemBLST.IBLSecurityST_GetUserContext</tcm:Location>
        </tcm:CallStack>
    </tcm:Details>
</tcm:Error>

有没有人知道我做错了什么? 提前致谢!

【问题讨论】:

    标签: api impersonation tridion tridion2009


    【解决方案1】:

    当涉及到模拟和 Tridion 时,需要了解以下几点......

    • 执行代码的用户不应访问 Tridion。
    • 执行代码的用户应配置为有效的“模拟用户”
    • 代码模拟的用户应该是有效的 Tridion 用户。

    如果所有这 3 个条件都为真,则模拟将起作用。

    执行代码是指执行代码的 Windows 帐户。如果此帐户可以访问 Tridion,则无需使用模拟。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-30
      • 2012-11-15
      相关资源
      最近更新 更多