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

问题描述 投票:0回答:1

我最近开始整合来自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”)

但是,当我尝试在前端查看图像时(即“http://www.sitedomain.com/media/9999/file-name.png”),我收到404错误。我认为这是因为该网站仍在尝试在网站中而不是在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上看到了一些类似的问题(并关闭了),但我相信我的情况是独一无二的,因为......

  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一样)

我也尝试放弃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>

在此先感谢您的帮助!

umbraco azure-storage-blobs umbraco7 azure-blob-storage
1个回答
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有关。

© www.soinside.com 2019 - 2024. All rights reserved.