Я использую sitecore 8.1, который, по-видимому, также поддерживает Areas. Чтобы запустить 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).
Не уверен, что мой контроллер должен наследоваться от конкретного контроллера sitecore.
Ваша помощь будет высоко оценена.
ОБНОВЛЕНИЕ:
Я хотел поделиться своим кодом, но он слишком большой. По сути, я скачал проект SC81Areas из репозитория ниже и добавил контроллер приветствия:
mvcArea
на узлеsite
в конфигурации? Прочтите это сообщение в блоге с пошаговым руководством - person jammykam   schedule 26.10.2015AreaRegistration
в свою папку Areas с правильной строкойAreaName
? - person jammykam   schedule 26.10.2015