我创建了一个控制台应用程序,可以对Tridion.AudienceManagement.API
API执行简单的操作。当我启动应用程序时,它首先做的是引用UserContext.Current
,此时我得到以下异常。
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()
我已确认Audience Manager已安装并正在服务器上运行。
通过从作为MTS用户登录的shell运行程序,我们可以避免此问题。起初我们认为问题在于日志文件夹上的文件系统权限,但是,即使授予完全控制也无济于事。
当比较运行代码的procmon输出作为两个用户时,我们可以看到失败的用户正在获取ACCESS DENIED以在C:\ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys中创建文件 - 文件名是一长串随机字符。 MtsUser没有看到此拒绝访问。
答案 0 :(得分:3)
似乎不允许运行控制台应用程序的用户读取用于加密配置的加密密钥。
您有几个选择可以解决它:
aspnet_regiis -pa "TridionRsaProtectedConfigurationProvider" "domain\username"
(显然需要以可以读取密钥的人的身份运行 - MTSUser)
有关详细信息,请参阅以下网址: