CMPコネクタのインストール後に「Could not load file or assembly Polly」エラーが発生する


説明

Sitecore XPインスタンス上にインストールされたSitecore Content Marketing Platform(CMP)コネクタは、Salesforce Marketing Cloudコネクタ(SFMC Connect)やSitecore Publishing Service(SPS)等のモジュールと互換性がない場合があります。これは、それらのモジュールが異なるPolly.dllのバージョンを使用しているためです。
例えば、SPSはpublicKeyTokenを持たないPolly.dll 5.9.0リリースを使用し、CMPはpublicKeyToken(c8a3ffc3f8f825cc)を含むPolly.dll6.0.1リリースを使用します。その結果、アセンブリ バインディング リダイレクトは次のエラーで失敗します。

ERROR [Sitecore Connect for Sitecore CMP]: Message handler encountered an exception Sitecore.Exceptions.ConfigurationException: Could not create object from service provider . Config XML: <processor type="Sitecore.Connector.CMP.Pipelines.ImportEntity.FetchEntity, Sitecore.Connector.CMP" resolve="true" /> ---> System.IO.FileLoadException: Could not load file or assembly 'Polly, Version=6.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
   at Stylelabs.M.Sdk.WebClient.Http.InternalClient..ctor(Uri serviceEndpoint)
   at Stylelabs.M.Sdk.WebClient.Http.InternalClient..ctor(Uri serviceEndpoint, String clientId, String clientSecret)
   at Stylelabs.M.Sdk.WebClient.Http.InternalClient..ctor(Uri serviceEndpoint, String clientId, String clientSecret, String username, String password)
...

解決策

本事象を解決するには、次の回避策を検討してください。

  1. Polly.dllバージョン5.9をサイトの「\bin」ディレクトリに保持します。
  2. \bin」フォルダに、例えば、「cmp」等の新しいフォルダを作成します。
  3. CMPコネクタに付属のPolly.dllバージョン 6.0.1アセンブリを「\bin\cmp」フォルダにコピーします。
  4. Web.config」ファイルの「assemblyBinding」ノードに以下を追加します。
    <dependentAssembly>
      <assemblyIdentity name="Polly" publicKeyToken="c8a3ffc3f8f825cc" />
      <codeBase version="6.0.0.0" href="bin\cmp\Polly.dll" />
      <codeBase version="6.0.1.0" href="bin\cmp\Polly.dll" />
    </dependentAssembly>