1

動的プレースホルダーについてこのガイドに従っていますが、getPlaceholderRenderings パイプラインを実行できません。

このパイプラインが機能しない理由がわかりません:

<getPlaceholderRenderings>
  <processor type="Site.CMS.Specialization.Pipelines.GetDynamicKeyAllowedRenderings, Site.CMS"/>
  <processor type="Sitecore.Pipelines.GetPlaceholderRenderings.GetAllowedRenderings, Sitecore.Kernel"/>
  <processor type="Sitecore.Pipelines.GetPlaceholderRenderings.GetPredefinedRenderings, Sitecore.Kernel"/>
  <processor type="Sitecore.Pipelines.GetPlaceholderRenderings.RemoveNonEditableRenderings, Sitecore.Kernel"/>
  <processor type="Sitecore.Pipelines.GetPlaceholderRenderings.GetPlaceholderRenderingsDialogUrl, Sitecore.Kernel"/>
</getPlaceholderRenderings>

私のプロセッサは次のようになります。

public class GetDynamicKeyAllowedRenderings : GetAllowedRenderings
{
    public new void Process(GetPlaceholderRenderingsArgs args)
    {
        string placeholderKey = args.PlaceholderKey;

    }
}

この段階では、動作することをテストしているだけです。そうではありません。

ガイドの指示どおりに実行しましたが、このパイプラインは実行されません。何度も再構築し、アプリケーション プールをリサイクルし、IIS を再起動しました。そのパイプラインでブレークポイントを使用してアプリケーションをデバッグすると、ヒットしないだけなので、どれも役に立ちません。

アップデート

次のコードを追加して、パイプラインがヒットしていることをテストしました。

public class ExceptionThrower : HttpRequestProcessor
{
    public override void Process(HttpRequestArgs args)
    {
        throw new Exception("ExceptionThrower");
    }
}

そして、この行を設定に:

<httpRequestBegin>
  <processor type="Site.CMS.Specialization.Pipelines.ExceptionThrower, SCW.CMS" />
  <processor type="Sitecore.Pipelines.PreprocessRequest.CheckIgnoreFlag, Sitecore.Kernel"/>
  <processor type="Sitecore.Pipelines.HttpRequest.EnsureServerUrl, Sitecore.Kernel"/>
  .
  .
  .
</httpRequestBegin>

これはヒットし、例外が表示されます。

追加してgetPlaceholderRenderingsもヒットしません。

私がフォローしている例 ( http://www.techphoria414.com/Blog/2011/August/Dynamic_Placeholder_Keys_Prototype ) は、元のコードとまったく同じ名前、継承、およびパラメーターを持っています。

4

1 に答える 1

1

GetAllowedRenderings問題はクラスとnewキーワードからの継承が原因だと思います。から継承しないようにしGetAllowedRenderingsて、ブレークポイントがヒットしたことを確認してください。

public class GetDynamicKeyAllowedRenderings
{
    public void Process(GetPlaceholderRenderingsArgs args)
    {
        string placeholderKey = args.PlaceholderKey;

    }
}

ページがマージされた構成でレンダリングを示しているかどうかも確認ShowConfig.aspxします。http://localhost/sitecore/admin/showconfig.aspx

于 2013-05-28T11:03:32.087 に答える