2016-10-05 7 views
1

Эти изображения могут быть загружены в локальную ENV, а также в серийное исполнение ENV. Однако, без всякой причины, промежуточная среда не может их загрузить.ImageProcessor/Windows Azure Storage проблема, возвращается 403 Запрещено

<package id="ImageProcessor" version="2.2.0.0" targetFramework="net45" /> 
    <package id="ImageProcessor.Web" version="4.2.1.0" targetFramework="net45" /> 
    <package id="ImageProcessor.Web.Config" version="2.2.0.0" targetFramework="net45" /> 
    <package id="ImageProcessor.Web.Plugins.AzureBlobCache" version="1.0.0.0" targetFramework="net45" /> 
    <package id="ImageProcessor.Web.PostProcessor" version="1.0.2.0" targetFramework="net45" /> 
    <package id="UmbracoAzureBlobStorageProvider" version="1.0.10.5" targetFramework="net45" /> 
    <package id="WindowsAzure.Storage" version="4.3.0" targetFramework="net45" /> 

Я использую ImageProcessor и домены в белый список в соответствии с требованиями:

<whitelist> 
     <add url="http://conceptjp.blob.core.windows.net/"/> 
     <add url="https://az739977.vo.msecnd.net/"/> 
</whitelist> 

https://staging.conceptjp.com/remote.axd?https://az739977.vo.msecnd.net/media/6883/logo-sparitual.png?quality=70 (не работы)

https://conceptjp.com/remote.axd?https://az739977.vo.msecnd.net/media/6883/logo-sparitual.png?quality=70 (работ)

https://cjp.local/remote.axd?https://az739977.vo.msecnd.net/media/6883/logo-sparitual.png?quality=70 (работ, местные условия)

2016-10-04 13:31:11.2393 Logging.TheLogger The remote server returned an error: (403) Forbidden. The remote server returned an error: (403) Forbidden. at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.EndExecuteAsync[T](IAsyncResult result) 
    at Microsoft.WindowsAzure.Storage.Core.Util.AsyncExtensions.<>c__DisplayClass1`1.<CreateCallback>b__0(IAsyncResult ar) 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at ImageProcessor.Web.Plugins.AzureBlobCache.AzureBlobCache.<IsNewOrUpdatedAsync>d__2.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at ImageProcessor.Web.HttpModules.ImageProcessingModule.<ProcessImageAsync>d__10.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Web.TaskAsyncHelper.EndTask(IAsyncResult ar) 
    at System.Web.HttpApplication.AsyncEventExecutionStep.OnAsyncEventCompletion(IAsyncResult ar) 
+0

Ответ был установить часы на сервере в формате UTC. http://stackoverflow.com/questions/22828279/403-error-in-production-from-windowsazure-storage –

ответ

8

Я не уверен, что сказать здесь. Почти все используется таким образом, который я бы не ожидал и не рекомендовал.

Если вы используете Umbraco на Azure, вы должны использовать следующий плагин для своих носителей.

https://github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure

FileSystemProvider вы используете уже устарели около полутора лет. Он на самом деле рекомендует использовать упоминание плагина выше на домашней странице.

NEW package UmbracoFileSystemProviders.Azure на форуме! : https://our.umbraco.org/projects/collaboration/umbracofilesystemprovidersazure/

Я рекомендую его вместо этого, особенно если вы находитесь на Umbraco 7.3 или выше. Он решает много проблем, которые вы могли бы получить в бэк-офисе.

https://our.umbraco.org/projects/backoffice-extensions/azure-blob-storage-provider

Причина этого заключается в том, что первоначальный поставщик имел недостатки, которые не могли быть закреплены без полного переписывания.

  1. Материал хранился в базе данных с использованием абсолютного URL-адреса. Это означало, что один и тот же носитель не может использоваться в разных средах.
  2. Носитель был загружен и отображен необработанным в backoffice. Это привело к ненужному загрузке 100 МБ данных, которые разрушили производительность на более крупных сайтах.

Перед началом работы в базе данных вам придется заменить ссылки на носители, чтобы удалить домен из сохраненного URL-адреса. Я лично рекомендовал бы перестраивать медиа-секцию с нуля.

На странице GitHub есть подробные инструкции, но я также перечислил их здесь.

Первый.Удалите старый плагин, обновить все библиотеки ImageProcessor до их последних версий и установить рекомендуемые FileSystemProvider плагина

Затем обновите ~/Config/FileSystemProviders.config замены поставщика по умолчанию следующий:

<?xml version="1.0"?> 
<FileSystemProviders> 
    <Provider alias="media" type="Our.Umbraco.FileSystemProviders.Azure.AzureBlobFileSystem, Our.Umbraco.FileSystemProviders.Azure"> 
    <Parameters> 
     <add key="containerName" value="media" /> 
     <add key="rootUrl" value="http://[myAccountName].blob.core.windows.net/" /> 
     <add key="connectionString" value="DefaultEndpointsProtocol=https;AccountName=[myAccountName];AccountKey=[myAccountKey]"/> 
     <!-- 
     Optional configuration value determining the maximum number of days to cache items in the browser. 
     Defaults to 365 days. 
     --> 
     <add key="maxDays" value="365" /> 
    </Parameters> 
    </Provider> 
</FileSystemProviders> 

Теперь необходимо настроить CloudImageService для захвата все запросы, начинающиеся с/СМИ/

<?xml version="1.0"?> 
<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"/> 
     <setting key="MaxBytes" value="8194304"/> 
     <setting key="Timeout" value="30000"/> 
     <setting key="Host" value="http://[myAccountName].blob.core.windows.net/media"/> 
     </settings> 
    </service> 
    </services> 

Убедитесь, что конфигурация вашего кэша настроена правильно.

<caching currentCache="AzureBlobCache"> 
    <caches> 
    <!-- Disk cache configuration removed for brevity --> 
    <cache name="AzureBlobCache" type="ImageProcessor.Web.Plugins.AzureBlobCache.AzureBlobCache, ImageProcessor.Web.Plugins.AzureBlobCache" maxDays="365"> 
     <settings> 
     <!-- The Account, Container and CDN details --> 
     <setting key="CachedStorageAccount" value="DefaultEndpointsProtocol=https;AccountName=[CacheAccountName];AccountKey=[CacheAccountKey]"/> 
     <setting key="CachedBlobContainer" value="cache"/> 
     <!-- Whether to add the container name to the CDN url. Newer Azure formats require false. --> 
     <setting key="UseCachedContainerInUrl" value="true"/> 
     <!-- Full CDN root url e.g http://123456.vo.msecnd.net/ --> 
     <setting key="CachedCDNRoot" value="[CdnRootUrl]"/> 
     <!-- Optional setting for a timeout limit in milliseconds when attempting to communicate with the CDN url. --> 
     <setting key="CachedCDNTimeout" value="1000"/> 
     <!-- 
      Optional settings for better identifcation of source images if stored in 
      Azure blob storage. 
     --> 
     <setting key="SourceStorageAccount" value=""/> 
     <setting key="SourceBlobContainer" value=""/> 
     <!-- 
      Optional settings facilitate streaming of the blob resource directly instead of a redirect. This is beneficial 
      for CDN purposes but caution should be taken if not used with a CDN as it will add quite a bit of overhead 
      to the site. 
     --> 
     <setting key="StreamCachedImage" value="false"/> 
     </settings> 
    </cache> 
    </caches> 
</caching> 

запросы изображений должны создаваться с использованием корня относительным /media/ пути только который встроенные в Virtual Path Provider будет перехватывать и обрабатывать соответствующим образом.

например /media/1046/car-small.jpg?width=500&height=500&mode=boxpad&bgcolor=hotpink

+0

Считаете ли вы, что это вопрос времени до того, как изображения [https://conceptjp.com] исчезнут? –

+0

Я не понимаю, о чем вы спрашиваете, я боюсь. –

+0

@JamesSouth - Я предполагаю, что он спрашивает, может ли он пропустить вторую половину исправления, которую вы ему предоставили, и просто ждать, пока люди обновят достаточно изображений, чтобы в базе данных не осталось абсолютных URL-адресов. Похоже, что здесь есть много углов: \ –