当前位置: 首页 > 知识库问答 >
问题:

Sitecore何时运行初始化管道?

杨选
2023-03-14

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

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

  • 初始化管道运行初始化路由处理器...
  • Sitecore。Mvc。管道。加载器。初始化路由。进程(PipelineArgs args)调用...
  • Sitecore。Mvc。管道。加载器。初始化路由。注册路由(RouteCollection路由,PipelineArgs args)调用...
  • Sitecore。Mvc。管道。加载器。初始化路由。SetRouteHandler(RouteCollection路由,PipelineArgs args)创建新的RouteHandlerWrapper对象

事情变得有点模糊。。。

  • Sitecore。Mvc。路由。RouteHandlerWrapper。GetHttpHandler(RequestContext RequestContext)返回新路由HttpHandler

然后,最后。。。

  • Sitecore。Mvc。路由。RouteHttpHandler。ProcessRequest(HttpContext上下文)调用
  • Sitecore。Mvc。路由。RouteHttpHandler。BeginRequest()运行mvc。请求开始管道

共有2个答案

魏勇军
2023-03-14

Sitecore中有一个SetActiveSite方法。上下文类。这将运行初始化管道,并且有几个地方可以调用该方法。

  • 作业管理器。初始化文本
  • MediaCreator。设置上下文
  • MediaRequestHandler。重定向IfUsershouldbelogedIn
  • WebDavMediaRequestHandler。处理请求

因此,它似乎与上下文的初始化相关联,因此不只是在应用程序的开头。

有关信息,我通过搜索“initialize”(包含引号)找到了这一点,其中发现:

CorePipeline.Run("initialize", new PipelineArgs());
钱渊
2023-03-14

我决定尝试在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\包含文件夹中添加了以下配置文件

<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)

这证实了约翰·韦斯特(HRH JohnWest)在写“这发生在一个模糊的程序集中”(Sitecore)时所说的话。更准确地说,是Nexus。

 类似资料:
  • 我已经为JBPM6.1创建了一个Spring mvc项目。每当我创建一个环境时,在DEFAULTBUILDER方法中传递了释放ID,我就会出现以下异常。 ** joinTransaction调用中没有活动的JTA事务 ** 我创建RuntimeManager与环境参考ReleaseId.kJar正确下载,但给出以下错误。当我从类路径中选择资产时,它工作正常。流程实例也运行良好。 ; 但是得到以下异

  • 我有一个JavaFX应用程序,它与用Java编写的控制器类一起使用FXML。在Java控制器中,在FXML节点初始化之前,我需要小心不要对其进行操作(否则我会得到一个NullPointerException),这在运行初始化方法之前是无法保证的。所以我发现自己经常这样做: 控制器在FXML文件中设置如下: 然后是Java文件中的控制器。 这是可行的,但它笨重且重复。我必须创建globalValue

  • 我想在部署初始化成功后运行特定的命令。 这是我的yaml文件: 不过,我希望在成功初始化部署并运行POD之后(而不是之前)运行db迁移命令。 我可以为每个pod手动执行(使用kubectl exec),但这不是很好的扩展性。

  • 此外,我使用tomcat7-maven-plugin运行tomcat。 这是密码。 web.xml

  • 我有我的文件下面: 我也有例子。: 出于某种原因,当我做在我的根目录(不是)我得到错误: 有人能给我解释一下这个错误中的问题吗?这是因为我的依赖项没有正确安装,还是因为其他原因?

  • 问题内容: 加载视图时,我想在其关联的控制器中运行一些初始化代码。 为此,我在视图的主要元素上使用了ng-init指令: 并在控制器中: 第一个问题:这是正确的方法吗? 接下来,事件顺序发生了问题。在视图中,我有一个“保存”按钮,它使用如下指令: 该功能在控制器中定义: 如您所见,它使用在函数中初始化的标志。 问题:该视图被加载的情况下,isClean函数被调用 之前的功能,因此,该标志是。我该怎