3

我一直在我们的网络应用程序中很好地使用ImageResizer.net,但现在我需要它来调整大小并提供没有(也不能)有文件扩展名的图像,比如这个:

http://localhost:58306/ClientImages/Batch/2012/12/10/f45198b7c452466684a4079de8d5f85f?width=600

在这种情况下,我知道我的文件总是 TIFF,但它们不会有文件扩展名。

我有哪些选择?

/resizer.debug.ashx:https://gist.github.com/raw/9c867823c983f0e5be10/4db31cb21af8b9b36f0aa4e765f6f459ba4b309f/gistfile1.txt _

更新

我按照计算机语言学家的指示:

    protected void Application_Start()
    {
        Config.Current.Pipeline.PostAuthorizeRequestStart +=
            delegate
                {
                    var path = Config.Current.Pipeline.PreRewritePath;
                    var clientImgsRelPath = PathUtils.ResolveAppRelative("~/ClientImages/");
                    var isClientImageRequest = path.StartsWith(clientImgsRelPath, StringComparison.OrdinalIgnoreCase);

                    if (isClientImageRequest)
                        Config.Current.Pipeline.SkipFileTypeCheck = true;
                };


                // other app start code here
    }

http://localhost:58306/ClientImages/Batch/2012/12/10/92d67b45584144beb5f791aaaf760252?width=600只响应原始图像而不调整大小。

这也被问到这里:http: //imageresizing.net/docs/howto/cache-non-images#comment-571615564

这发生在使用 Cassini 或 Visual Studio Web 服务器或任何您想调用它的开发过程中。

4

1 回答 1

2

首先,您必须使用 IIS7 集成模式。经典模式不起作用;它不允许 ASP.NET 访问无扩展请求

ImageResizer 无法知道无扩展名的 URL 是图像,除非您明确告诉它。

该文档解释说:

http://imageresizing.net/docs/howto/cache-non-images

本质上,您最终会在您的 URL 上执行逻辑(通常是 String.StartsWith),以确定 ImageResizer 是否应该将文件视为图像。

Config.Current.Pipeline.PostAuthorizeRequestStart += delegate(IHttpModule sender, HttpContext context) {
  string path = Config.Current.Pipeline.PreRewritePath;

  //Skip the file extension check for everything in this folder:
  if (path.StartsWith(PathUtils.ResolveAppRelative("~/folder/of/images"), 
        StringComparison.OrdinalIgnoreCase)){

        Config.Current.Pipeline.SkipFileTypeCheck = true; 
  }
};

您应该在 global.asax 的 Application_Start 中注册此事件处理程序。

于 2013-01-17T22:34:51.060 回答