ImageProcessor not working with UmbracoFileSystemProviders.Azure

I am having an issue getting ImageProcessor to work with images stored in an Azure Blob. I am using the latest version of the UmbracoFileSystemProviders.Azure plugin installed via nuget. The images are retrieved from the blob but none of the ImageProcessor query string parameters will work on the images.

i.e. http://localhost:12345/media/16058/image1.jpg?crop=0.040796245837117766,0,0.041288222827732549,0&cropmode=percentage&width=50&height=367&rnd=130875544740000000

This url was outputed by the GetCropUrl method. The full sized image is returned and not the cropped image. The blob container is public. Images are being cached just not processed. No broken image but the crops are being ignored.

I have this at the end of my main web.config:

  <imageProcessor>    
    <security configSource="config\imageprocessor\security.config" />
    <caching configSource="config\imageprocessor\cache.config" />
  </imageProcessor>

Here is my security.config:

<?xml version="1.0" encoding="utf-8"?>
<security>
  <services>
    <service name="LocalFileImageService" type="ImageProcessor.Web.Services.LocalFileImageService, ImageProcessor.Web" />
    <service prefix="media/" name="CloudImageService" type="ImageProcessor.Web.Services.CloudImageService, ImageProcessor.Web">
      <settings>
        <setting key="Container" value="media-myclient"/>
        <setting key="MaxBytes" value="8194304"/>
        <setting key="Timeout" value="30000"/>
        <setting key="Host" value="http://myaccount.blob.core.windows.net/media-myclient"/>
      </settings>
    </service>
  </services>
</security>

Is the RemoteImageService service required or does the CloudImageService service handle relative urls so that I don’t need to add the remote.axd to the url? The GitHub read me for the plugin does not show it but other posts do. If so, is the whitelist section required?

Here is the cache.config with DiskCache set:

<?xml version="1.0" encoding="utf-8"?>
<caching currentCache="DiskCache">
  <caches>
    <cache name="DiskCache" type="ImageProcessor.Web.Caching.DiskCache, ImageProcessor.Web" maxDays="365">
      <settings>
        <setting key="VirtualCachePath" value="~/app_data/cache" />
      </settings>
    </cache>
    <cache name="AzureBlobCache" type="ImageProcessor.Web.Plugins.AzureBlobCache.AzureBlobCache, ImageProcessor.Web.Plugins.AzureBlobCache" maxDays="365">
      <settings>
        <setting key="CachedStorageAccount" value="DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey" />
        <setting key="CachedBlobContainer" value="cache-client" />
        <setting key="UseCachedContainerInUrl" value="false" />
        <setting key="CachedCDNRoot" value="https://myaccount.azureedge.net/" />
        <setting key="CachedCDNTimeout" value="1000" />
        <setting key="SourceStorageAccount" value="DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey" />
        <setting key="SourceBlobContainer" value="media-client" />
        <setting key="StreamCachedImage" value="false" />
      </settings>
    </cache>
  </caches>
</caching>

I understand that putting the cache into the blob/CDN is better, but is it mandatory for this to work with ImageProcessor providers? Or have I just missed something here? Thanks.


This is a companion discussion topic for the original entry at https://our.umbraco.com/forum/82351-imageprocessor-not-working-with-umbracofilesystemprovidersazure