2012-04-30 1 views
6

Я пытаюсь использовать Tridion ContentManagment API для извлечения категорий и ключевых слов таксономии, но я столкнулся с ошибкой Access denied.Как включить пользователя для олицетворения в Tridion 2009?

У меня есть следующий метод:

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 имеет доступ к Content Manager Tridion, конфигурируется как администратор, и была добавлена ​​пользователями имперсонацию в «СДЛ Конфигурация конфигурации 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> 

Кто-нибудь есть какие-либо ключи к тому, что я делаю неправильно? Спасибо заранее!

ответ

11

Вот несколько вещей, чтобы понять, когда речь идет об олицетворении & TRIDION ...

  • Пользователь выполнения код не должен иметь доступ к TRIDION.
  • Пользователь выполнения код должен быть сконфигурирован как допустимый «олицетворения пользователя»
  • пользователю, что код подражает должен быть действительным пользователем Tridion.

Если все эти 3 условия верны, то выдача будет работать.

От Выполнение кода, я имею в виду учетную запись Windows, под которой выполняется код. Если у этой учетной записи есть доступ к Tridion, вам не нужно использовать олицетворение.

Надеюсь, это поможет.