2013-01-24 52 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用戶的shell運行程序,我們可以避免這個問題。起初我們認爲這個問題與日誌文件夾的文件系統權限有關,但是,即使授予完全控制也沒有幫助。

將運行代碼的procmon輸出作爲兩個用戶進行比較時,我們可以看到失敗的用戶在C:\ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys中創建了ACCESS DENIED文件名是一串長長的隨機字符。此訪問被拒絕MtsUser沒有看到。

回答

3

看來運行控制檯應用程序的用戶不允許讀取用於加密配置的加密密鑰。

您有幾種選擇來解決這個問題:

  1. 刪除加密(不推薦)
  2. 運行你的工具,誰不有權使用的關鍵 (即MTSUser)
  3. 用戶
  4. 授予您要運行該工具的用戶的權限。例如 命令行:aspnet_regiis -pa "TridionRsaProtectedConfigurationProvider" "domain\username"

(這顯然需要有人誰可以讀取密鑰運行 - MTSUser)

請參閱以下網址瞭解更多信息:

相關問題