我正在使用显然也支持区域的 sitecore 8.1。为了让 POC 继续进行,我从下面下载了 sitecore81areas 项目:
https://github.com/LonghornTaco/Sc81Areas
并添加了一个简单的 hello world 控制器。
但是,我在尝试访问 sitecore 项目时收到以下错误:
[ExceptionWrapper: The controller for path '/' was not found or does not implement IController.]
[ControllerCreationException: Could not create controller: 'Sc81Areas.Web.Areas.Site1.Controllers.Hello'.
The context item is: '/sitecore/content/Site1'.
The current route url is: '{*pathInfo}'. This is the default Sitecore route which is set up in the 'InitializeRoutes' processor of the 'initialize' pipeline. ]
Sitecore.Mvc.Controllers.SitecoreControllerFactory.CreateController(RequestContext requestContext, String controllerName) +202
Sitecore.Mvc.Controllers.ControllerRunner.GetController() +23
Sitecore.Mvc.Controllers.ControllerRunner.Execute() +43
Sitecore.Mvc.Presentation.ControllerRenderer.Render(TextWriter writer) +134
Sitecore.Mvc.Pipelines.Response.RenderRendering.ExecuteRenderer.Render(Renderer renderer, TextWriter writer, RenderRenderingArgs args) +30
Sitecore.Mvc.Pipelines.Response.RenderRendering.ExecuteRenderer.Process(RenderRenderingArgs args) +75
(Object , Object[] ) +74
Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args) +484
Sitecore.Mvc.Pipelines.PipelineService.RunPipeline(String pipelineName, TArgs args) +184
Sitecore.Mvc.Pipelines.Response.RenderPlaceholder.PerformRendering.Render(String placeholderName, TextWriter writer, RenderPlaceholderArgs args) +216
(Object , Object[] ) +74
Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args) +484
Sitecore.Mvc.Pipelines.PipelineService.RunPipeline(String pipelineName, TArgs args) +184
Sitecore.Mvc.Helpers.SitecoreHelper.Placeholder(String placeholderName) +259
ASP._Page_Areas_Site1_Views_Shared_Site1DefaultLayout_cshtml.Execute() in c:\sitecore\sitecore81\Website\Areas\Site1\Views\Shared\Site1DefaultLayout.cshtml:19
System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +253
System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +148
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +122
System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData) +137
Sitecore.Mvc.Presentation.ViewRenderer.Render(TextWriter writer) +221
[InvalidOperationException: Error while rendering view: '/Areas/Site1/Views/Shared/Site1DefaultLayout.cshtml' (model: 'Sitecore.Mvc.Presentation.RenderingModel, Sitecore.Mvc').
我禁用了默认路由配置:
//routes.MapRoute(
// name: "Default",
// url: "{controller}/{action}/{id}",
// defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
//);
还
- 在布局上添加了区域。
- 删除了区域注册下的默认路由。
- 在站点节点上添加了 mvcarea
错误仍然存在。我有点困惑到底什么可能是根本原因(可能是配置设置或 DI)。
不确定我的控制器是否需要从特定的站点核心控制器继承。
您的帮助将不胜感激。
更新:
我想分享我的代码,但它很安静。基本上我从下面的 repo 下载了 SC81Areas 项目并添加了 hello 控制器: