我使用Sitecore 8.1 MVC,Castle Windsor和glass mapper v3.5实现了一个解决方案。在此解决方案中,我们有两个MVC项目,但它可能包含多个网站(Glass_Sample,Glass_Sample_1等)
Glass_Global :这就是为什么全局/通用功能(城堡windsor)在这个项目中实现并被其他网站使用( Glass_Sample )。我把城堡windsor实现放在这个项目:
并将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文件
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网站的主页布局上使用控制器渲染,但当我浏览网站时出现以下错误:
我错过了什么吗?
我将Controller,Interface放在Areas文件夹中这是导致此错误的根本原因吗?
有什么建议吗?
PS
它现在正在工作。实际上我创建了一个新的Glass_Sample.config文件并放在Glass_Sample / App_Config / Include文件夹中:
<pipelines>
<initialize>
<processor type="Glass_Sample.Pipelines.CastleWindsor.CastleWindsorConfig, Glass_Sample" />
</initialize>
</pipelines>
现在这个解决方案可能包含多个网站。我应该按照以下方法在此解决方案中添加新网站:
将在此解决方案中添加新的MVC项目并添加所需的sitecore程序集
转到IIS,添加新应用程序( GlassSampleSite1 )并从 GlassSample 网站文件夹
3.转到解决方案并右键单击 GlassSampleSite1 项目,并将发布目标设置为新创建的实例 GlassSampleSite1 / Website 文件夹并进行发布。
这会起作用吗?