Sitecore 6.5:如何在媒体项上处理403

时间:2014-03-26 19:30:27

标签: sitecore sitecore6

我在web.config中设置了一个自定义管道来处理403& 404消息传递和行为。代码看起来像这样......

public class NotFoundProcessor : Sitecore.Pipelines.HttpRequest.HttpRequestProcessor
{
    public override void Process(Sitecore.Pipelines.HttpRequest.HttpRequestArgs args)
    {
        //handle 404 & 403 processing of the requested item
    }
}

适用于任何"页面"这是要求的。

但是,媒体库项目似乎不会被该管道处理。我在http://sdn.sitecore.net/upload/sitecore6/handling_http_404_a4.pdf

中找到了这个文字
  

如果IIS使用ASP.NET来处理请求,并且没有处理器中止   httpRequestBegin管道,与请求的URL不对应   到Sitecore媒体项目,上下文站点中的内容项目,或   磁盘上的文件,然后Sitecore激活该值指定的URL   / configuration / sitecore / settings / setting元素的属性   web.config,名称为ItemNotFoundUrl。

这表示媒体项的处理方式不同,但我找不到任何在管道中捕获媒体项请求的引用。有没有办法做到这一点,或者另一种解决方法是允许我的自定义403/404处理媒体项目?

谢谢, 萨德

1 个答案:

答案 0 :(得分:0)

您是对的,媒体由不同的处理器处理,该处理器在<system.webServer><handlers>的{​​{1}}和<system.web><httpHandlers>中定义。媒体项的请求不会通过常用的Sitecore管道。

具体的处理程序是: web.config

如果您需要添加自己的自定义逻辑,然后将其添加到<add verb="*" path="sitecore_media.ashx" type="Sitecore.Resources.Media.MediaRequestHandler, Sitecore.Kernel" name="Sitecore.MediaRequestHandler"/>,则可以使用dotPeek decompiler检查当前逻辑。

说完所有这些后,如果您正确设置了权限,Sitecore应该开箱即用。应将用户重定向到“拒绝访问”页面,或者在DoProcessRequest()中设置的任何内容(您可以将其更改为登录页面)。

确保您已经破坏了正确用户的继承,通常是Settings.NoAccessUrl(而不是extranet\Anonymous),但如果您更改了default/Anonymous元素中的域,那么相应的{{ 1}}用户。