gpt4 book ai didi

sitecore - Sitecore 何时运行初始化管道?

转载 作者:行者123 更新时间:2023-12-01 08:58:32 25 4
gpt4 key购买 nike

我一直在浏览 Sitecore.Kernel,但似乎找不到 Sitecore 运行 Initialize 管道的位置。它是在每个页面请求上运行还是在应用程序启动时只运行一次?您能指出为此管道调用 Run 方法的确切位置吗?

更新我最终问这个问题的原因是因为我在 Sitecore 的代码中追溯 mvc.requestBegin 管道的执行。这是我发现的:

  • Initialize 管道运行 InitializeRoutes 处理器...
  • Sitecore.Mvc.Pipelines.Loader.InitializeRoutes.Process(PipelineArgs args)打电话...
  • Sitecore.Mvc.Pipelines.Loader.InitializeRoutes.RegisterRoutes(RouteCollection routes, PipelineArgs args) 调用...
  • Sitecore.Mvc.Pipelines.Loader.InitializeRoutes.SetRouteHandlers(RouteCollection routes, PipelineArgs args) 创建新的 RouteHandlerWrapper 对象

这里的事情变得有点模糊......

  • Sitecore.Mvc.Routing.RouteHandlerWrapper.GetHttpHandler(RequestContext requestContext) 返回(IHttpHandler) new RouteHttpHandler

然后,最后……

  • Sitecore.Mvc.Routing.RouteHttpHandler.ProcessRequest(HttpContext context) 调用...
  • Sitecore.Mvc.Routing.RouteHttpHandler.BeginRequest() 运行 mvc.requestBegin 管道

最佳答案

我决定尝试在全新安装的 Sitecore 7.2 中添加一些调试。我创建了以下简单的类:

using Sitecore.Diagnostics;
using Sitecore.Pipelines;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Web;

namespace SCMVC72.Pipelines
{
public class DebugStackTrace
{
public void Process(PipelineArgs args)
{
StackTrace st = new StackTrace();
Log.Info(string.Empty, (object)this);
Log.Info("*********************************************************************", (object)this);
Log.Info("Debug StackTrace", (object)this);
Log.Info(st.ToString(), (object)this);
Log.Info("*********************************************************************", (object)this);
}
}
}

我在 App_Config\Include 文件夹中添加了以下配置文件:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<initialize>
<processor type="SCMVC72.Pipelines.DebugStackTrace, SCMVC72"
patch:before="processor[@type='Sitecore.Pipelines.Loader.ShowVersion, Sitecore.Kernel']" />
</initialize>
</pipelines>
</sitecore>
</configuration>

在应用程序重新启动时,这是我在日志中得到的输出:

5764 14:38:08 INFO  HttpModule is being initialized
5764 14:38:08 INFO
5764 14:38:08 INFO *********************************************************************
5764 14:38:08 INFO Debug StackTrace
5764 14:38:08 INFO at SCMVC72.Pipelines.DebugStackTrace.Process(PipelineArgs args)
at (Object , Object[] )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Nexus.Web.HttpModule.Application_Start()
at Sitecore.Nexus.Web.HttpModule.Init(HttpApplication app)
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)
5764 14:38:08 INFO *********************************************************************

这是著名人物之前的输出:

5764 14:38:08 INFO  
5764 14:38:08 INFO **********************************************************************
5764 14:38:08 INFO **********************************************************************
5764 14:38:08 INFO Sitecore started
5764 14:38:08 INFO Sitecore.NET 7.2 (rev. 140228)

这证实了约翰·韦斯特阁下在写道“这发生在其中一个混淆的程序集中”——更准确地说是 Sitecore.Nexus 时所说的话。

关于sitecore - Sitecore 何时运行初始化管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23852601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com