Umbraco / Azure Blob Storage - 能够在 Umbraco 中上传图像和查看,但在前端出现 404 错误

Umbraco / Azure Blob Storage - Able to upload images & view in Umbraco, but getting 404 Errors on front-end

我最近开始从 https://github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure 集成 UmbracoFileSystemProviders.Azure 并且能够在我的本地计算机和开发环境上执行以下操作...

  1. 我可以登录 Umbraco (v7.3.1/a1.0.5780.28249),上传图片 & 让它出现在我们 Azure blob 上的适当容器中 存储
  2. 我可以在相应的 Azure 地址(即“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”)

但是,当我尝试在前端(即“http://www.sitedomain.com/media/9999/file-name.png”)查看图像时出现 404 错误。我认为这是因为该站点仍在尝试在站点内而不是在 Azure 中查找前端图像(基于 creating/removing 在适当的相对位置的匹配目录和图像导致图像加载的事实或产生 404)。这个问题在多个浏览器和图像上传中是一致的(无论我是通过 Umbraco 还是通过 Microsoft Azure Storage Explorer 上传)。有谁知道我该如何解决它?

以下是我正在使用的所有 files/code 片段,我认为这些片段可能与该问题相关(为了安全起见,特定于客户端的数据已换成通用数据)...

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 上看到过一些类似的问题(并关闭),但我相信我的情况是独一无二的,因为...

  1. 我在查看项目时没有看到配置错误,或者 Umbraco 后端(与 https://github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure/issues/103)
  2. 我的 Umbraco 是 7.3.1 版(而不是像 https://github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure/issues/57 那样的 7.5+)
  3. 在网络配置中注释掉图像处理器并不能解决问题(与 https://github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure/issues/27)

我也尝试过放弃 web.config 方法并在 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>

在此先感谢您的帮助!

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

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

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

这是 Umbraco 版本 7.7.7。