2016-10-05 7 views
1

これらのイメージは、ローカルENVおよびプロダクションENVにロードできます。ただし、何も理由がないため、ステージング環境でこれらをロードできません。ImageProcessor/Windows Azureストレージの問題は、403を返します。Forbidden

<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" /> 

私は画像プロセッサを使用していますし、必要に応じてドメインがホワイトリストに登録されています

<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

私はここで何を言うべきか分かりません。ほぼすべてが、私が期待しない方法で使用されています。

AzureでUmbracoを使用している場合は、メディアに次のプラグインを使用する必要があります。

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

使用しているFileSystemProvider約一年半のために廃止されてきました。実際には、上記のプラグインの言及をホームページに使用することをお勧めします。

新しいパッケージ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. メディアがダウンロードされ、バックオフィスに未処理で表示されました。これにより100 MBのデータが不必要にダウンロードされ、大規模なサイトでパフォーマンスが低下しました。

保存されたURLからドメインを取り除くためにデータベースで作業を開始する前に、メディア参照を置き換える必要があります。個人的には、メディアセクションを一から再構築することをお勧めします。

GitHubページには包括的な説明がありますが、ここではその一覧も示します。

最初。

その後でデフォルトのプロバイダを交換~/Config/FileSystemProviders.configを更新し、古いプラグインをアンインストールし、最新バージョンにすべての画像プロセッサライブラリを更新し、推奨FileSystemProviderプラグインをインストールし、次の

<?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/はそれに応じて傍受して処理されます使用して作成する必要があります。

たとえば/media/1046/car-small.jpg?width=500&height=500&mode=boxpad&bgcolor=hotpink

+0

あなたは[https://conceptjp.com]画像が消えるまでの時間の問題だと思いますか? –

+0

私はあなたが何を恐れているのか分かりません。 –

+0

@ JamesSouth - あなたが彼に提供した修正の後半をスキップできるかどうかを尋ねてきて、データベースに絶対URLが残っていないという十分な画像を人が更新するのを待つだけです。 多くのコーナーのような音がここでカットされています。\ –