我正在遵循此动态占位符指南,无法让我的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)与原始代码具有完全相同的名称,继承和参数。
答案 0 :(得分:1)
我认为问题是由GetAllowedRenderings
类和new
关键字的继承引起的。尽量不要继承GetAllowedRenderings
并看到断点被击中:
public class GetDynamicKeyAllowedRenderings
{
public void Process(GetPlaceholderRenderingsArgs args)
{
string placeholderKey = args.PlaceholderKey;
}
}
同时检查ShowConfig.aspx
页面是否在合并配置中显示您的渲染:http://localhost/sitecore/admin/showconfig.aspx