2013-01-24 5 views
4

Tridion.AudienceManagement.API API에서 간단한 작업을 수행하는 콘솔 응용 프로그램을 만들었습니다. 응용 프로그램을 시작할 때 가장 먼저하는 것은 참조 UserContext.Current이며 다음과 같은 예외가 발생합니다.초기화 중에 Tridion.AudienceManagement.API 예외가 발생합니다.

The type initializer for 'Tridion.AudienceManagement.DomainModel.Utilities.Configuration' threw an exception. 
at Tridion.AudienceManagement.DomainModel.Utilities.Configuration.get_LogFolder() 
at Tridion.AudienceManagement.DomainModel.Utilities.Logger.AssertValidLogFolder() 
at Tridion.AudienceManagement.DomainModel.Utilities.Logger.WriteLine(LogLevel logLevel, String message, Object[] objects) 
at Tridion.AudienceManagement.DomainModel.ServiceClient.ContentManagerClient.LogBindingInfo(Exception ex) 
at Tridion.AudienceManagement.DomainModel.ServiceClient.ContentManagerClient.GetConfiguredCoreService() 
at Tridion.AudienceManagement.DomainModel.ServiceClient.ContentManagerClient.GetClient(UserContext userContext, UserData& userData) 
at Tridion.AudienceManagement.DomainModel.ServiceClient.ContentManagerClient.LoadCurrentUser(UserContext userContext, String userDataXml) 
at Tridion.AudienceManagement.DomainModel.UserContext..ctor(String trusteeName) 
at Tridion.AudienceManagement.API.UserContext..ctor() 
at Tridion.AudienceManagement.API.UserContext.get_Current() 

잠재 고객 관리자가 설치되어 서버에서 작동하고 있음을 확인했습니다.

MTS 사용자로 로그인 한 셸에서 프로그램을 실행하면이 문제를 피할 수 있습니다. 처음에는 문제가 로그 폴더의 파일 시스템 사용 권한과 관련이 있다고 생각했지만 전체 제어 권한을 부여해도 문제가되지 않았습니다.

procmon 출력을 두 사용자로 비교했을 때 실패한 사용자가 C : \ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys - 내에 파일을 만들 때 ACCESS DENIED를 받고 있음을 알 수있었습니다. filename은 임의적으로 보이는 문자의 긴 문자열입니다. 이 ACCESS DENIED는 MtsUser에 표시되지 않습니다.

답변

3

콘솔 응용 프로그램을 실행하는 사용자는 구성을 암호화하는 데 사용 된 암호화 키를 읽을 수 없습니다.

  1. 암호화 (권장하지 않음)
  2. 을 키 (즉 MTSUser)를 사용할 수있는 권한을 가지고있는 사용자로 당신의 도구를 실행을 제거

    당신은 그것을 해결하기 위해 몇 가지 옵션이

  3. 도구를 실행하려는 사용자에게 사용 권한을 부여하십시오. 예 명령 줄 : aspnet_regiis -pa "TridionRsaProtectedConfigurationProvider" "domain\username"

(분명히 키 읽을 수있는 사람으로 실행해야 어느 - MTSUser) 자세한 내용은 다음 URL을 참조하십시오

을 :