如何删除 Sitefinity 默认生成的包含版本信息的名为 "Generator" 的元标记?

how to remove the meta tag named "Generator" which Sitefinity generates by default containing the version information?

我想删除元标记 <meta name="Generator" content="Sitefinity 9.1.6110.0 SE \">,我已经通过在母版页中编写以下代码块实现了解决方案。

 protected override void Render(HtmlTextWriter writer)
 {
   using (HtmlTextWriter htmlwriter = new HtmlTextWriter(new System.IO.StringWriter()))
     {
       base.Render(htmlwriter);
       string html = htmlwriter.InnerWriter.ToString();
       html = html.Replace("<meta name=\"Generator\" content=\"Sitefinity 8.0.5710.0 PE\" />", "");
       writer.Write((html));
     }
}

但有人建议我这不是一个合适的解决方案,因为 In-memory 呈现整个页面,默认母版页将整个页面呈现为一个字符串,这会产生性能开销。如果你想删除headers,你可以这样做 在 ASP.NET 页 object 级别。所以我想要一个建议的其他解决方案,有人可以提供其他解决方案吗?(性能有效的解决方案)

每个 SF Version meta tag 论坛帖子似乎您可以覆盖 System.Web.UI.Adapters.ControlAdapter class 并添加您自己的元标记呈现逻辑。见最后post.

如果这对您不起作用,您可以考虑缓存生成的页面,这样您就不需要再次替换和重新呈现相同的页面。

最好的方法是订阅 IPagePreRenderCompleteEvent 事件并删除此控件。 global.asax代码示例

protected void Application_Start(object sender, EventArgs e)
{
        Telerik.Sitefinity.Abstractions.Bootstrapper.Initialized += Bootstrapper_Initialized;
}
protected void Bootstrapper_Initialized(object sender, Telerik.Sitefinity.Data.ExecutedEventArgs args)
{
        if (args.CommandName == "Bootstrapped") {
            EventHub.Subscribe<IPagePreRenderCompleteEvent>(this.OnPagePreRenderCompleteEventHandler);
        }
}
private void OnPagePreRenderCompleteEventHandler(IPagePreRenderCompleteEvent evt)
{
        if (!evt.PageSiteNode.IsBackend)
        {
            var controls = evt.Page.Header.Controls;
            System.Web.UI.Control generatorControl = null; 
            for(int i=0;i< evt.Page.Header.Controls.Count;i++)
            {
                var control = evt.Page.Header.Controls[i];
                if ((control is HtmlMeta) && (control as HtmlMeta).Name == "Generator") {
                    generatorControl = control;
                }
            }
            evt.Page.Header.Controls.Remove(generatorControl);
        }
 }