我最近开始整合来自https://github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure的UmbracoFileSystemProviders.Azure,并且能够在我的本地机器和开发环境中执行以下操作...
但是,当我尝试在前端查看图像时(即“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上看到了一些类似的问题(并关闭了),但我相信我的情况是独一无二的,因为......
我也尝试放弃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有关。