在 EPiServer (v 11.20.14) 站点上添加 Azure Blob 存储会导致 400 错误请求

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

首先 - 我已经尝试了其他线程中给出的有关此问题的所有解决方案。到目前为止还没有解决我的问题。

我们的客户一直在运行文件共享作为默认的 blob 提供程序,但要使其完全正常工作存在一些问题,因此他们一直在做一些解决方案。他们希望将其移动到 Azure 存储。我们已经按照指南设置了存储帐户和容器。

我设法使用 AzCopy 将所有 blob 复制到我想要使用的容器中。但一旦我将其引入到我的 web.config 中,它就会崩溃并给我一个 400 响应。

<blob defaultProvider="azureblobs">
  <providers>
    <add name="azureblobs" type="EPiServer.Azure.Blobs.AzureBlobProvider,EPiServer.Azure" connectionStringName="EPiServerAzureBlobs" container="mycontainer" />
  </providers>
</blob>

<add name="EPiServerAzureBlobs" connectionString="DefaultEndpointsProtocol=https;AccountName=xxxxxxx;AccountKey=xxxxxxx==;EndpointSuffix=core.windows.net"/>

抛出的异常如下:

One or more errors occurred.
   at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at EPiServer.Framework.FrameworkInitialization.<>c__DisplayClass2_0.<InitializeBlobProviders>b__0(Object o, EventArgs e)

The remote server returned an error: (400) Bad Request.
   at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:line 604
   at EPiServer.Azure.Blobs.DefaultAzureBlobContainer.CreateIfNotExist()
   at System.Threading.Tasks.Task.Execute()

The remote server returned an error: (400) Bad Request.
   at System.Net.HttpWebRequest.GetResponse()
   at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:line 677

我们正在 .NET Framework 4.6.1 和 EPiServer.CMS v.11.20.14 上运行,这意味着 Azure 的一些较新软件包将无法工作,因此我目前使用 EPiServer.Azure v.9.4.4 和 WindowsAzure .存储8.5.0。我知道已经对该软件包进行了拆分,但安装单独的软件包并没有解决问题。有什么线索可能导致这种情况吗?谢谢!

c# .net azure-blob-storage episerver
1个回答
0
投票

仍然不确定是什么导致了问题,但我想分享我的解决方案。

因此,将目标框架更新到 4.6.2 可以将某些软件包(包括 EPiServer.Azure)更新到 10.0.1。我还能够更深入地研究问题并发现一个内部异常:“WebForms UnobtrusiveValidationMode 需要 'jquery' 的 ScriptResourceMapping。请在页面加载时添加名为 jquery(区分大小写)的 ScriptResourceMapping”。因此,将其添加到我的 webconfig 中可以使网站恢复正常:

<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />

为了让 blob 正常工作,我使用 AzCopy 从本地目录到容器创建了一个新副本,将它们直接放在容器下,而不是放在子目录中。之后,我从 EPiCode.BlobConverter nuget 运行 BlobConverter-job,它终于按照我想要的方式运行了。

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