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