Sitecore何时运行初始化管道?

Sitecore何时运行初始化管道?,sitecore,Sitecore,我一直在浏览Sitecore.Kernel,但似乎找不到Sitecore运行初始化管道的位置。它是在每个页面请求上运行还是只在应用程序启动时运行一次?你能告诉我这个管道调用Run方法的确切位置吗 更新 我最终问这个问题的原因是因为我在Sitecore的代码中追溯了mvc.requestBegin管道的执行。这就是我发现的: Initialize管道运行InitializeRoutes处理器 Sitecore.Mvc.Pipelines.Loader.InitializeRoutes.Proce

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

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

  • Initialize
    管道运行
    InitializeRoutes
    处理器
  • Sitecore.Mvc.Pipelines.Loader.InitializeRoutes.Process(PipelineArgs)
    呼叫
  • Sitecore.Mvc.Pipelines.Loader.InitializeRoutes.RegisterRoutes(RouteCollection routes,PipelineArgs参数)
    调用
  • Sitecore.Mvc.Pipelines.Loader.InitializeRoutes.SetRouteHandlers(路由收集路由,PipelineArgs参数)
    创建新的
    RouteHandlerWrapper
    对象
这里的事情变得有点模糊

  • Sitecore.Mvc.Routing.RouteHandlerWrapper.GetHttpHandler(RequestContext-RequestContext)
    返回
    (IHttpHandler)新路由HttpHandler
然后,最后

  • Sitecore.Mvc.Routing.RouteHttpHandler.ProcessRequest(HttpContext上下文)
    调用
  • Sitecore.Mvc.Routing.RouteHttpHandler.BeginRequest()
    运行
    Mvc.requestBegin
    管道

    • Sitecore.Context
      类中有一个
      SetActiveSite
      方法。这将运行
      initialize
      管道,并且有几个地方可以调用该方法

      • JobRunner.initializeContext
      • MediaCreator.SetContext
      • MediaRequestHandler.RedirectIfUsershouldbloggedin
      • WebDavMediaRequestHandler.ProcessRequest
      因此,它似乎与上下文的初始化相关联,因此不仅仅是在应用程序开始时

      有关信息,我通过搜索
      “Initalize”
      (包括引号)找到了这一点,它找到了以下内容:

      运行(“初始化”,新的PipelineArgs());
      我决定尝试为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\u 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  
      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)
      

      这证实了HRH John West在写“这发生在一个模糊的程序集中”——更准确地说是Sitecore.Nexus时所说的话。

      现在有兴趣知道是谁调用
      InitializeContext
      方法以及何时调用。我猜,如果
      SetActiveSite
      运行
      Initialize
      管道,这意味着
      HttpBeginRequest
      管道必须已经运行了(因为这是确定站点、上下文项、用户等的管道),我快速查看了一下。它被称为
      作业
      管道的一部分。在web.config中搜索
      InitializeContext
      ,这样看起来就像是创建了一个“人工”上下文。这篇文章提到了这一点,是的,我也发现了这一点。退一步说,整个调查是从试图了解谁调用/何时调用
      mvc.beginRequest
      管道开始的。我发现它是由
      RouteHttpHandler.BeginRequest()
      调用的,它是由
      RouteHandlerWrapper.GetHttpHandler()
      调用的,它是在执行
      初始化
      管道期间调用的。现在我发现每当运行作业时都会发生这种情况。但是作业是在不同的线程中运行的,所以我认为这不是正确的执行路径。。。丢失:)HRH John west声明
      :初始化Sitecore应用程序“
      。在所有可能的情况下,这发生在一个模糊的程序集中,所以没有太多的机会跟踪它。
      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)