У меня есть возможность проанализировать URL-адрес запрашиваемого изображения и применить команды изменения размера на основе запрошенного URL-адреса, если пользователь не видит команды изменения размера в URL-адресе. Например.ImageResizer Невозможно применить пресет в событии перезаписи (пресеты уже развернуты)
http://someurl.com/image/category/image-title.jpg
Для этого я подключил в Pipeline_Rewrite - базовый пример ниже:
void Pipeline_Rewrite(IHttpModule sender, HttpContext context, ImageResizer.Configuration.IUrlEventArgs e)
{
// Clear the current command string - we're going to create a new one
e.QueryString.Clear();
var process = ((Global)HttpContext.Current.ApplicationInstance).ContainerProvider.RequestLifetime.Resolve<Interfaces.IRequestBuilder>();
// Set the "new" command string
e.QueryString = process.BuildCommandList(context);
}
BuildCommandList(context)
анализирует текущий URL и строит список соответствующих команд, чтобы добавить в строку запроса и возвращает NameValueCollection
. Все это работает отлично, и команды применяются, если только новые команды не являются Preset
, определенными в конфиге.
E.g.
Если BuildCommandList(context)
возвращает эквивалент width=150&height=150
, это работает.
Если BuildCommandList(context)
возвращает эквивалент preset=thumbnail
, это не сработает, я просто получу полноразмерное исходное изображение.
При дальнейших исследованиях, похоже, что любые команды Preset уже были расширены до соответствующих строк команд до запуска метода Pipeline_Rewrite
, поэтому добавление их здесь слишком велико.
Выписка из файла web.config:
<resizer>
<presets onlyAllowPresets="false">
<preset name="thumbnail" settings="width=150;height=150" />
</presets>
<plugins>
<add name="Presets" />
</plugins>
</resizer>
Есть ли способ, чтобы очистить командную строку, применить пребет, и ImageResizer повторной обработки пресетов в этот момент?
Добавление 'новых ImageResizer.Plugins.Basic.Presets() Установить (Config.Current). 'непосредственно под линией, где я зарегистрировал обработчик событий в' Application_Start', отсортировал проблему. –