4

Tridion.AudienceManagement.APIAPIで単純なアクションを実行するコンソール アプリケーションを作成しました。アプリケーションを起動すると、最初に参照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 ユーザーとしてログインしたシェルからプログラムを実行することで、この問題を回避できます。最初は、ログ フォルダーに対するファイル システムのアクセス許可に問題があると考えていましたが、フル コントロールを許可しても問題は解決しませんでした。

2 人のユーザーとしてコードを実行したときの procmon の出力を比較すると、失敗したユーザーは、C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 内にファイルを作成するために ACCESS DENIED を取得していることがわかります。ファイル名は長いです。ランダムに見える文字列。この ACCESS DENIED は MtsUser には見られません。

4

1 に答える 1

3

コンソール アプリケーションを実行しているユーザーは、構成の暗号化に使用された暗号化キーを読み取ることが許可されていないようです。

それを解決するには、いくつかのオプションがあります。

  1. 暗号化を削除する (非推奨)
  2. キーを使用する権限を持つユーザー (MTSUser など) としてツールを実行します。
  3. ツールを実行するユーザーにアクセス許可を付与します。コマンドラインの例:aspnet_regiis -pa "TridionRsaProtectedConfigurationProvider" "domain\username"

(明らかに、キーを読み取ることができる人として実行する必要があります-MTSUser)

詳細については、次の URL を参照してください。

于 2013-01-24T16:49:49.537 に答える