ECMのメッセージ プレビューのトラブルシューティング


解説

ECMモジュールの「メッセージ プレビュー(Message Preview)」および「メッセージ レンダリング(Message Rendering)」インターフェースで、時折以下のようなエラーが表示されることがあります。

これらの問題に共通の症状として、スタック トレース中で.DownloadStringメソッドが参照されているNonCriticalExceptionエラーがSitecoreログに記録されることが挙げられます。例えば、ECM 1.3.xでは次のようなエラーが記録されます。

ERROR EmailCampaign: The remote server returned an error: (500) Internal Server Error.

Exception: Sitecore.Modules.EmailCampaign.Exceptions.NonCriticalException
Message: The remote server returned an error: (500) Internal Server Error.
Source: Sitecore.EmailCampaign
   at Sitecore.Modules.EmailCampaign.Core.WebContent.DownloadString(String url, Boolean useIisCredentials)
   at Sitecore.Modules.EmailCampaign.WebPageMail.GetMessageBody()
   at Sitecore.Modules.EmailCampaign.Core.MessagePreviewHelper.GetMessageInfo(MessageItem message)

ECM 2.xでは、次のようになります。

ERROR EmailCampaign: The remote server returned an error: (403) Forbidden.
Exception: Sitecore.Modules.EmailCampaign.Exceptions.NonCriticalException
Message: The remote server returned an error: (403) Forbidden.
Source: Sitecore.EmailCampaign
   at Sitecore.Modules.EmailCampaign.Core.WebContent.DownloadString(String url, Boolean useIisCredentials)
   at Sitecore.Modules.EmailCampaign.Messages.WebPageMail.GetMessageBody()
   at Sitecore.Modules.EmailCampaign.Core.MessageInfo.FillCeInfo()

トラブルシューティングの手順

この問題をトラブルシューティングして修正するために、まずECMが実際にどのようにしてメッセージ コンテンツのレンダリングを実行しているかについて説明します。

メッセージ コンテンツをレンダリングするために、ECMはSitecoreソリューションに対して独立したwebリクエストを(.NET API、すなわちHttpWebRequestを利用して)実行します。この手法により、パーソナライズなどのSitecoreレンダリング エンジンのすべての機能を組み込むことができるようになります。このリクエストは、URLに対して次のように行われます。

http://<renderer-URL>/?sc_itemid=<message-item-id>&sc_lang=en&sc_device=<device>&sc_mode=preview&sc_duration=temporary&ec_database=master&ec_recipient=<user-name>&ec_id=<ec_id>

このようなリクエストがメッセージ コンテンツを返すことに失敗した場合、Sitecore ECMユーザーに対して上記のようなエラーが表示されます。従って、メッセージ プレビューの問題を解決するには、この特定のリクエストがエラーで失敗しないようにする必要があります。

メッセージ コンテンツ リクエストURLに渡されている実際のパラメータと、実際に返されたレスポンスを調査するには、以下の手順を実施してください。

  1. ecm.requestbody.aspxをダウンロードします。
  2. 上記をSitecoreソリューションの/sitecore/adminフォルダーに配置します。
  3. http://<サイト>/sitecore/admin/ecm.requestbody.aspxのURLにアクセスします。
  4. パラメータをセット アップします。いくつかのパラメータに関する説明は次の通りです。
    • Message Body Item ID - メッセージ本文を表すアイテムのIDです(メッセージ アイテムの「Body」フィールドをチェックします)。
    • ECM ID -  ECMに動的に割り当てられる内部セキュリティIDです。Sitecoreソリューションに固有のものであり、リサイクルごとに更新されます。この値は変更しないで下さい。
  5. 「Check」ボタンを押下して、テストを実行します。

ページの「Output」セクションに、いかなるECM固有のロジックも関与することなく、レスポンスのコンテンツがそのままレンダリングされます。

また、「Final URL」セクションでは、メッセージ コンテンツのリクエストの実行に使用された実際のURLが表示されます。