Umbraco / Azure Blob存储 - 能够上传图像&在Umbraco查看,但在前端获得404错误

时间:2018-03-26 18:30:07

标签: umbraco azure-storage-blobs umbraco7 azure-blob-storage

我最近开始整合来自https://github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure的UmbracoFileSystemProviders.Azure,并且能够在我的本地机器上执行以下操作:开发环境......

  1. 我可以登录Umbraco(v7.3.1 / a1.0.5780.28249),上传图片& 让它出现在我们的Azure blob上的相应容器中 存储
  2. 我可以在相应的天蓝色地址查看图片(即" https://azureaccount.blob.core.windows.net/media-stage/9999/file-name.png")
  3. 我可以在Umbraco的后端查看图像(即" http://localhost:99999/umbraco/backoffice/UmbracoApi/Images/GetBigThumbnail?originalImagePath=%2Fmedia%2F9999%2Ffile-name.png")
  4. 但是,当我尝试在前端查看图像时出现404错误(即" http://www.sitedomain.com/media/9999/file-name.png")。我认为这是因为该网站仍在尝试在网站中而不是在Azure中查找前端图像(基于在相应的相对位置创建/删除匹配的目录和图像导致图像加载或产生404)。这个问题在多个浏览器中都是一致的。图片上传(无论我是通过Umbraco还是通过Microsoft Azure Storage Explorer上传)。有没有人有任何想法我怎么能解决它?

    以下是我使用的所有文件/代码片段,我认为可能与该问题相关(特定于客户端的数据被换出以支持通用数据以确保安全性)......

    Config / FileSystemProviders.config的相关部分:

        <Provider alias="media" type="Our.Umbraco.FileSystemProviders.Azure.AzureBlobFileSystem, Our.Umbraco.FileSystemProviders.Azure">    
          <Parameters>  
            <add key="alias" value="media"/>  
          </Parameters>  
        </Provider>
    

    Web.config的相关部分:

        <appSettings>
          <!--other data here-->
          <add key="AzureBlobFileSystem.ConnectionString:media" value="DefaultEndpointsProtocol=https;AccountName=azureaccount;AccountKey=aBcDeFgHiJkLmNoPqRsTuVwXyZ==;EndpointSuffix=core.windows.net" />
          <add key="AzureBlobFileSystem.ContainerName:media" value="media-stage" />
          <add key="AzureBlobFileSystem.RootUrl:media" value="https://azureaccount.blob.core.windows.net/" />
          <add key="AzureBlobFileSystem.MaxDays:media" value="365" />
          <add key="AzureBlobFileSystem.UseDefaultRoute:media" value="true" />
          <add key="AzureBlobFileSystem.UsePrivateContainer:media" value="false" />
          <!--other data here-->
        </appSettings>
    
        <location path="Media">
          <system.webServer>
            <handlers>
              <remove name="StaticFileHandler" />
              <add name="StaticFileHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.StaticFileHandler" />
            </handlers>
          </system.webServer>
        </location>
    

    有关故障排除过程的一些其他说明......

    我在GitHub上发现了一些类似的问题(&amp; off out),但我相信我的情况是独一无二的,因为......

    1. 我在查看项目时看不到配置错误 umbraco后端(与 https://github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure/issues/103
    2. 我的Umbraco是版本7.3.1(而不是7.5+,如https://github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure/issues/57
    3. 在Web配置中注释掉图像处理器并不能解决问题(如同 https://github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure/issues/27
    4. 我也试过放弃web.config方法&amp;在Config / FileSystemProviders.config中使用以下内容(同样,客户端特定的数据已被广义内容替换),但仍有同样的问题......

          <Provider alias="media" type="Our.Umbraco.FileSystemProviders.Azure.AzureBlobFileSystem, Our.Umbraco.FileSystemProviders.Azure">
            <Parameters>
              <add key="containerName" value="media-stage" />
              <add key="rootUrl" value="https://azureaccount.blob.core.windows.net/" />
              <add key="connectionString" value="DefaultEndpointsProtocol=https;AccountName=azureaccount;AccountKey=aBcDeFgHiJkLmNoPqRsTuVwXyZ==;EndpointSuffix=core.windows.net"/>
              <add key="maxDays" value="365" />
              <add key="useDefaultRoute" value="true" />
              <add key="usePrivateContainer" value="false" />
          </Parameters>
      

      提前感谢您的任何帮助!

1 个答案:

答案 0 :(得分:1)

我发现我需要禁用虚拟路径提供程序,否则生成的URL始终是相对的(格式为/media/nnnnn/filename.jpg)。因此,我将其添加到了web.config AppSettings

<add key="AzureBlobFileSystem.DisableVirtualPathProvider" value="true" />

请参见https://github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure

这是Umbraco版本7.7.7的版本。