Простая функция с Umbraco и Image Processor остановлена ​​после обновления - PullRequest
0 голосов
/ 20 сентября 2018

Я поддерживаю сайт Umbraco, который содержит простую функцию водяных знаков, реализованную в Image Processor.Это работает в Umbraco 7.4.2 через скомпилированную библиотеку, для которой у меня нет исходного кода.После обновления Umbraco до 7.12.3 он больше не работает.Я ищу простое объяснение или подсказки о том, что может быть причиной.

Версии ImageProcessor и ImageProcessor.Web не изменились (2.6.2.25 и 4.9.3.25) и ImageProcessor.Web.Config (2.4.1.19) без изменений.

Казалось бы, реализована запись в файле \ config \ ImageProcessor \ processing.config следующим образом:

<processing preserveExifMetaData="false" fixGamma="false" interceptAllRequests="true">
<presets>
</presets>
<plugins>
<plugin name="SecurityWatermark" type="MMUmbracoLibrary.Imaging.Web.Processors.SecurityWatermark, MMUmbracoLibrary">
  <settings>
    <setting key="WatermarkVirtualPath" value="~/app_data/watermark.png" />
    </settings>

Просмотр библиотеки с помощью DotPeek Iсм. источник метода в следующем:

    using ImageProcessor.Processors;
    using ImageProcessor.Web.Processors;
    using System.Text.RegularExpressions;

    namespace MMUmbracoLibrary.Imaging.Web.Processors
    {
      public class SecurityWatermark : IWebGraphicsProcessor
      {
        private static readonly Regex QueryRegex = new Regex(".+", RegexOptions.Compiled);

        public SecurityWatermark()
        {
          this.Processor = (IGraphicsProcessor) new MMUmbracoLibrary.Imaging.Processors.SecurityWatermark();
        }

        public Regex RegexPattern
        {
          get
          {
            return SecurityWatermark.QueryRegex;
          }
        }

        public int SortOrder
        {
          get
          {
            return 0;
          }
          private set
          {
          }
        }

        public IGraphicsProcessor Processor { get; private set; }

        public int MatchRegexIndex(string queryString)
        {
          return this.SortOrder;
        }
      }
    }

Также этот код из DotPeek, вероятно, является наиболее важной частью:

namespace MMUmbracoLibrary.Imaging.Processors
{
  public class SecurityWatermark : IGraphicsProcessor
  {
    public object DynamicParameter { get; set; }

    public Dictionary<string, string> Settings { get; set; }

    public Image ProcessImage(ImageFactory factory)
    {
      IMedia mediaByPath = ApplicationContext.Current.Services.MediaService.GetMediaByPath(HttpContext.Current.Request.Path);
      if (mediaByPath == null)
        throw new HttpException(404, "No image found");
      if ((int) mediaByPath.Properties["disableWatermark"].Value != 0)
        return factory.Image;
      string filename = HttpContext.Current.Server.MapPath(this.Settings["WatermarkVirtualPath"]);
      ImageLayer imageLayer = new ImageLayer()
      {
        Image = (Image) new Bitmap(filename),
        Opacity = 100,
        Size = factory.Image.Size
      };
      return factory.Overlay(imageLayer).Image;
    }
  }
}

Если честно, этот код не делаетмного смысла для меня, но, похоже, работает.Кто-нибудь может подсказать, как обновление Umbraco могло заставить это перестать работать?

...