Azure存储模拟器403禁止使用

时间:2017-04-27 15:54:34

标签: azure http-status-code-403 azure-storage-emulator

通过Nuget,我将WindowsAzure.Storage升级为8.1.1

然后我下载了AzureStorageEmulator 5.1.0.0客户端。

我的连接字符串:

UseDevelopmentStorage=true;

自从之前显然工作正常以来,我没有进行任何代码更改。我知道得到例外:

Microsoft.WindowsAzure.Storage.StorageException: The remote server returned an error: (403) Forbidden. ---> System.Net.WebException: The remote server returned an error: (403) Forbidden.
   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
   --- End of inner exception stack trace ---
   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 Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer.CreateIfNotExists(BlobContainerPublicAccessType accessType, BlobRequestOptions requestOptions, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Blob\CloudBlobContainer.cs:line 233
   at C3.Code.Controls.Application.Storage.Blob.Blob.GetContainer(String containerName) in C:\Dropbox\Dropbox (Scirra Ltd)\Tom\C3 Website\C3Alpha2\Code\Controls\Application\Storage\Blob\Blob.cs:line 112
Request Information
RequestID:621bc19f-eb6a-4a98-b19e-f5b01ac22c26
RequestDate:Thu, 27 Apr 2017 16:17:34 GMT
StatusMessage:Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
ErrorCode:AuthenticationFailed
ErrorMessage:Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:621bc19f-eb6a-4a98-b19e-f5b01ac22c26
Time:2017-04-27T16:17:34.5166522Z

当我打电话

var blobClient = GetClient();
var container = blobClient.GetContainerReference(containerName);
container.CreateIfNotExists(BlobContainerPublicAccessType.Blob);

我看到系统时间会对此产生影响,所以我查了一下:

Server DateTime.UtcNow = 27/04/2017 16:17:34
Exception RequestDate = Thu, 27 Apr 2017 16:17:34 GMT

为什么我在更新客户端和nuget包之后看到这个错误的想法?

编辑:GetClient()代码:

private static CloudBlobClient GetClient()
{
    var account = CloudStorageAccount.Parse(Settings.Deployment.AzureConnectionString);
    return account.CreateCloudBlobClient();
}

编辑:BaseUri

基本URI是:     http://127.0.0.1:10000/devstoreaccount1

访问我得到:

<Error>
<Code>InvalidQueryParameterValue</Code>
<Message>
Value for one of the query parameters specified in the request URI is invalid. RequestId:9cc906b0-eec6-44b2-bb3d-f77020af4a4c Time:2017-04-27T16:43:16.8538679Z
</Message>
<QueryParameterName>comp</QueryParameterName>
<QueryParameterValue/>
<Reason/>
</Error>

在存储模拟器初始化期间,它显示已将其安装到:
(localdb)\MSSQLLocalDBAzureStorageEmulatorDb51

访问:http://127.0.0.1:10000/azurestorageemulatordb51

节目:

<Error>
<Code>OutOfRangeInput</Code>
<Message>
One of the request inputs is out of range. RequestId:dab5e6c1-bc4a-4c65-a4d9-6d44634cb36a Time:2017-04-27T16:47:20.3093597Z
</Message>
</Error>

6 个答案:

答案 0 :(得分:10)

我遇到了同样的问题,并尝试降级WindowsAzure.Storage但没有成功。经过漫长的一天尝试禁用每一个,我发现从startup.cs中删除这一行修复了问题:

services.AddApplicationInsightsTelemetry(configuration);

我不知道为什么这些是相关的,以及为什么ApplicationInsights会导致Azure存储出现问题。我已经尝试使用版本2.1.0-beta2和2.0.0的Microsoft.ApplicationInsights.AspNetCore,两者都会导致403错误。

答案 1 :(得分:5)

您可以通过修改ApplicationInsights.config文件并将localhost添加到ExcludeComponentCorrelationHttpHeadersOnDomains部分来解决Application Insights版本2.4.0的此问题:

<ExcludeComponentCorrelationHttpHeadersOnDomains>
    <Add>localhost</Add>
    <Add>127.0.0.1</Add>
    <Add>core.windows.net</Add>
    <Add>core.chinacloudapi.cn</Add>
    <Add>core.cloudapi.de</Add>
    <Add>core.usgovcloudapi.net</Add>
</ExcludeComponentCorrelationHttpHeadersOnDomains>

答案 2 :(得分:2)

将Application Insights从版本2.4升级到2.4.1解决了这个问题。

注意:当我选择将AI添加到我的项目中时(使用向导),添加了版本2.4。令人惊讶的是,添加的版本不是最新的AI版本。我不得不去NuGet并手动升级到最新版本。

答案 3 :(得分:0)

我遇到了同样的问题,找不到任何解决办法来解决这个问题。它似乎真的连接到ApplicationInsights - 从干净的控制台应用程序直接调用本地模拟器工作正常,从ApplicationInsights返回403的Web项目调用模拟器。

您可以使用其他storage emulator或使用真正的Azure Blob存储。

答案 4 :(得分:0)

将Application Insights软件包安装到业务规则项目后,我们遇到了同样的问题。 我们有一个带有asp.net核心的N层解决方案,它有不同版本的应用程序见解。

事实证明我们将非asp.net核心软件包安装到业务规则中,然后在访问队列客户端时产生Forbidden 403错误。

我们删除了非asp.net核心应用程序洞察,将应用程序洞察核心安装到业务规则项目中,并且一切正常。

答案 5 :(得分:0)

对于那些看不到的人

=INDEX(Sheet1!B:B,MATCH(A2,Sheet1!A:A,0),1)

services.AddApplicationInsightsTelemetry(configuration);文件中,ApplicationInsight配置可能在Startup.cs中完成,如下所示:

Program.cs