将ImagerResizer模块限制为仅一个特定路径/子目录的推荐做法?

时间:2015-11-11 19:45:42

标签: asp.net-mvc imageresizer

建议的做法是限制ImageResizer仅对指定子目录中的图像进行操作(在我个人的情况下,只需要通过PostRewrite对某个目录中的图像进行水印,但除了几个子目录外,我真的如果我不需要,我们不希望网站范围的图片甚至触及InterceptModule?

  • 通过MvcRoutingShim as referenced without an example in ImageResizer.net documentation以某种方式配置忽略路由。
  • Web服务中的
  • $('#main').focus(); var mainDiv = document.getElementById("main"); var startNode = mainDiv; var endNode = mainDiv; var range = document.createRange(); range.setStart(startNode, 6); range.setEnd(endNode, 10); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range);

    <location ...>

  • Application.BeginRequest过滤掉路径。

  • 或者在PostRewrite(Config.Current.Pipleline.PostRewrite)上过滤了。

详细说明:

  • ASP.NET MVC 5.2.3(集成)
  • ImageResizer 4.x
  • IIS 7(Windows Server 2008 R2)

1 个答案:

答案 0 :(得分:1)

处理Config.Current.PostRewrite并在事件参数(查询字符串)中设置process=nocache=no。这将禁用ImageResizer与请求的交互。

Configuring ImageResizer to only work in certain directories中所述,您无法使HttpModules位置特定。它们总是在应用程序范围内。

默认情况下,除非您通过查询字符串明确请求,否则ImageResizer不对图像执行任何操作。它(使用authorizeAllImages =&#34; true&#34;)允许您通过AuthorizeImage控制访问权限,以及通过RewritePostRewrite事件执行网址重写。

如果从VirtualPathProvider提供图像,它将通过将请求分配给StaticFileHandler来使其工作;但如果图像是物理文件,它什么都不做。

如果你想要真正的隔离,你总是可以设置一个子应用程序(子应用程序),它有一个单独的应用程序池,安装在子目录中。