Sitecore 8.1 MVC城堡winsdor问题在多个MVC项目中

时间:2015-11-21 05:09:26

标签: dependency-injection sitecore sitecore-mvc castle-windsor-3

我使用Sitecore 8.1 MVC,Castle Windsor和glass mapper v3.5实现了一个解决方案。在此解决方案中,我们有两个MVC项目,但它可能包含多个网站(Glass_Sample,Glass_Sample_1等)

Glass_Global :这就是为什么全局/通用功能(城堡windsor)在这个项目中实现并被其他网站使用( Glass_Sample )。我把城堡windsor实现放在这个项目:

enter image description here

并将Glass_Global.config文件放在App_Config / Include文件夹

<pipelines>
      <initialize>
        <processor type="Glass_Global.Pipelines.CastleWindsor.CastleWindsorConfig, Glass_Global" />
        <processor type="Glass_Sample.Pipelines.CastleWindsor.CastleWindsorConfig, Glass_Sample" />
      </initialize>
 </pipelines>

Glass_Sample :这将是此解决方案中的第一个网站。我已在此项目中添加了CastleWindsorConfig.cs文件

enter image description here

public class CastleWindsorConfig
    {
        public void Process(PipelineArgs args)
        {
            WindsorContainer container = new WindsorContainer();
            container.Install(FromAssembly.This());
            GlobalConfiguration.Configuration.DependencyResolver = new WindsorDependencyResolver(container);
            container.Register(Classes.FromThisAssembly().BasedOn<IController>().LifestyleTransient());
            container.Register(Component.For<ICommon>().ImplementedBy<CommonService>().LifestyleTransient());
            IControllerFactory controllerFactory = new WindsorControllerFactory(container);
            SitecoreControllerFactory scSitecoreControllerFactory = new SitecoreControllerFactory(controllerFactory); 
            System.Web.Mvc.ControllerBuilder.Current.SetControllerFactory(scSitecoreControllerFactory);
        }
    }

我在Glass_Sample网站的主页布局上使用控制器渲染,但当我浏览网站时出现以下错误:

enter image description here

我错过了什么吗?

我将Controller,Interface放在Areas文件夹中这是导致此错误的根本原因吗?

enter image description here

有什么建议吗?

PS

它现在正在工作。实际上我创建了一个新的Glass_Sample.config文件并放在Glass_Sample / App_Config / Include文件夹中:

<pipelines>
      <initialize>
        <processor type="Glass_Sample.Pipelines.CastleWindsor.CastleWindsorConfig, Glass_Sample" />
      </initialize>
 </pipelines>

现在这个解决方案可能包含多个网站。我应该按照以下方法在此解决方案中添加新网站:

  1. 将在此解决方案中添加新的MVC项目并添加所需的sitecore程序集

  2. 转到IIS,添加新应用程序( GlassSampleSite1 )并从 GlassSample 网站文件夹

    3.转到解决方案并右键单击 GlassSampleSite1 项目,并将发布目标设置为新创建的实例 GlassSampleSite1 / Website 文件夹并进行发布。

    这会起作用吗?

0 个答案:

没有答案