ImageResizer и файлы изображений без расширения

Я прекрасно использовал 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 или как вы хотите его называть.


person Ronnie Overby    schedule 17.01.2013    source источник


Ответы (1)


Во-первых, вы ДОЛЖНЫ использовать интегрированный режим IIS7. Классический режим работать не будет; он не разрешает доступ ASP.NET к запросам без расширений

ImageResizer не может знать, что URL-адреса без расширения являются изображениями, если вы явно не укажете это.

Этот документ объясняет:

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

По сути, вы в конечном итоге будете выполнять логику (обычно String.StartsWith) на своих URL-адресах, чтобы выяснить, должен ли 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; 
  }
};

Вы должны зарегистрировать этот обработчик событий в Application_Start в global.asax.

person Lilith River    schedule 17.01.2013
comment
Вы пытались указать &process=always для принудительной обработки как изображения? - person Lilith River; 13.02.2013