Как использовать ImageResizer HttpModule в модуле Orchard?

Я хочу использовать библиотеку ImageResizer (версия 4+) в моем модуле Orchard для отображения эскизов PDF, но я хочу использовать его в качестве модуля HttpModule вместо использования управляемого API (например, модуля Orchard.MediaProcessing).

Поэтому я следовал приведенным инструкциям и соответствующим образом настроил Web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    ...
    <section name="resizer" type="ImageResizer.ResizerSection" requirePermission="false" />
  </configSections>

  <resizer>
    <plugins>
      <add name="MvcRoutingShim" />
      <add name="PdfiumRenderer" downloadNativeDependencies="true" />
    </plugins>
  </resizer>

  <system.web>
    ...
    <httpModules>
      ...
      <add name="ImageResizingModule" type="ImageResizer.InterceptModule" />
    </httpModules>
  </system.web>

  <system.webServer>
    ...
    <modules ...>
      ...
      <add name="ImageResizingModule" type="ImageResizer.InterceptModule" />
    </modules>
  </system.webServer>

  <runtime>
    <assemblyBinding ...>
      ...
      <dependentAssembly>
        <assemblyIdentity name="PdfiumViewer" publicKeyToken="91e4789cfb0609e0" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.7.0.0" newVersion="2.7.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>    
</configuration>

К сожалению, это не работает вообще, изображения и PDF-файлы передаются без изменений.

Поэтому я проделал те же шаги с проектом Orchard.Web, и он неожиданно заработал, но теперь он больше не зависит от модуля.

Есть ли способ включить ImageResizer только в моем модуле?

1 ответ

Модули Orchard не могут объявлять модули Http, они определены на уровне приложения. Что вы можете сделать, это зарегистрировать свой собственный контроллер / действие в вашем модуле и напрямую использовать ImageResizer.

Однако эта функция уже реализована с помощью некоторых полезных помощников Orchard, таких как модуль Orchard.MediaProcessing. Вы найдете пример с этим сообщением в блоге: http://weblogs.asp.net/bleroy/effortlessly-resize-images-in-orchard-1-7

Вы также можете взглянуть на https://github.com/OrchardCMS/Orchard/blob/dev/src/Orchard.Web/Modules/Orchard.MediaProcessing/Shapes/MediaShapes.cs чтобы увидеть все остальные варианты.

У вас также есть способ определить Профили со страницы администратора и повторно использовать эти именованные профили. Профиль - это набор фильтров, которые применяются к изображению (вращение, водяной знак, обрезка,...), поэтому вы можете вызывать его по любому URL-адресу изображения из ваших просмотров.

Другие вопросы по тегам