Error handling Sitecore-多站点错误页面处理

Error handling Sitecore-多站点错误页面处理,error-handling,sitecore,sitecore6,Error Handling,Sitecore,Sitecore6,我有一个多站点的Sitecore项目。我知道如何通过webconfig的ErrorPage、ItemNotFoundUrl、LayoutNotFoundUrl、LinkItemNotFoundUrl处理一个站点的错误页面 但是,我想为每个站点显示不同的错误页面。我怎样才能做到这一点 对于多站点安装,有一个关于如何执行此操作的说明。在任何情况下,您都可以通过扩展sitecore.sites.SiteContext类()将每个站点的错误页面的URL存储为web.config中/configurati

我有一个多站点的Sitecore项目。我知道如何通过webconfig的ErrorPage、ItemNotFoundUrl、LayoutNotFoundUrl、LinkItemNotFoundUrl处理一个站点的错误页面


但是,我想为每个站点显示不同的错误页面。我怎样才能做到这一点

对于多站点安装,有一个关于如何执行此操作的说明。

在任何情况下,您都可以通过扩展
sitecore.sites.SiteContext
类()将每个站点的错误页面的URL存储为web.config中
/configuration/sitecore/sites/site
元素的属性

提供了有关404
/ItemNotFound
条件的详细信息,包括扩展
Sitecore.SItes.SiteContext
的示例

对于
ItemNotFoundUrl
,我认为这取决于您是使用项目还是文件作为404页面。如果使用项目处理404,则在项目解析器之后,向
httpRequestBegin
管道添加一个处理器,以便在上下文项目为null时将该站点的上下文项目设置为404项目。如果您使用文件,那么我认为应该覆盖
Sitecore.Pipelines.HttpRequest.ExecuteRequest.HandleItemNotFound()
Sitecore.Resources.Media.MediaRequestHandler.DoProcessRequest()
,并更新web.config文件中的相应引用

对于
ErrorPage
,我认为您必须重写
Sitecore.Pipelines.RenderLayout.SecurityCheck.Process
,并更新web.config中的相应引用

对于
LayoutNotFoundUrl
,我认为您必须重写
Sitecore.Pipelines.HttpRequest.ExecuteRequest.HandleLayoutNotFound
,并更新web.config中的相应引用

对于
LinkItemNotFoundUrl
,我可能会在renderField管道中添加一个处理器,以使用适用于上下文站点的值替换设置的默认值


如果这是一个常见的需求,我们应该将其转换为Sitecore共享源项目,或者将其添加到现有项目中。

有一个共享源项目,它应该适合大多数部分的需求。它叫

希望有帮助