どうやらエリアもサポートしているサイトコア 8.1 を使用しています。POC を開始するために、以下から sitecore81areas プロジェクトをダウンロードしました。
https://github.com/LonghornTaco/Sc81Areas
そして、シンプルな hello world コントローラーを追加しました。
ただし、サイトコア アイテムにアクセスしようとすると、次のエラーが表示されます。
[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の可能性があります)が正確に何であるかについて少し混乱しています。
コントローラーが特定のサイトコア コントローラーから継承する必要があるかどうかわかりません。
あなたの助けは大歓迎です。
アップデート:
コードを共有したかったのですが、かなり大きいです。基本的に、以下のレポから SC81Areas プロジェクトをダウンロードし、hello コントローラーを追加しました。