Sitecore Habitat, как я могу создать базовую страницу 404?

Я пытаюсь создать простую страницу 404 в Sitecore Habitat, полностью озадаченную и новую для Sitecore. Я создал это NotFound страница в дереве содержимого с использованием базовой страницы.

У меня есть следующее в моем проекте веб-сайта. <projectName>.web.config под app_config > include > project папка.

<settings>
  <setting name="Preview.DefaultSite" value="qube" />
    <!--  ITEM NOT FOUND HANDLER
        Url of page handling 'Item not found' errors
  -->
  <setting name="ItemNotFoundUrl">
    <patch:attribute name="value">/NotFound</patch:attribute>
  </setting>
    <!--  LINK ITEM NOT FOUND HANDLER
        Url of page handling 'Link item not found' errors
  -->
    <setting name="LinkItemNotFoundUrl">
      <patch:attribute name="value">/NotFound</patch:attribute>
    </setting>
    <!--  LAYOUT NOT FOUND HANDLER
        Url of page handling 'Layout not found' errors
  -->
    <setting name="LayoutNotFoundUrl">
      <patch:attribute name="value">/NotFound</patch:attribute>
    </setting>
    <!--  ERROR HANDLER
        Url of page handling generic errors
  -->
    <setting name="ErrorPage">
      <patch:attribute name="value">/NotFound</patch:attribute>
    </setting>
</settings>

Я получаю следующую ошибку / трассировку стека при попытке перейти на несуществующий URL/ страницу, глядя на вкладку сети в консоли HTTP 500 server error не тот 404, который я хотел:

[HttpException (0x80004005): Error executing child request for /NotFound.]
   System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride) +2292
   System.Web.HttpServerUtility.Execute(String path, TextWriter writer, Boolean preserveForm) +822
   System.Web.HttpServerUtility.Transfer(String path, Boolean preserveForm) +76
   System.Web.HttpServerUtility.Transfer(String path) +45
   Sitecore.Pipelines.HttpRequest.ExecuteRequest.HandleItemNotFound(HttpRequestArgs args) +845
   (Object , Object[] ) +74
   Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args) +484
   Sitecore.Nexus.Web.HttpModule.(Object , EventArgs ) +525
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +142
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +92

1 ответ

Решение

Эти настройки не должны указывать путь к Sitecore. Если вы хотите использовать элемент как страницу 404, вы должны создать процессор для добавления в конвейер httpRequestBegin. Дополнительную информацию, код и эту тему можно легко найти в нескольких блогах, например, https://briancaos.wordpress.com/2013/03/21/sitecore-404-without-302/

Или вы можете использовать модуль Sitecore Error Manager (см. https://ctor.io/handling-404-and-other-errors-with-sitecore-items/). Я еще не использовал его, но он должен делать то, что вы хотите.

Другие вопросы по тегам