7

通过 Nuget,我升级WindowsAzure.Storage8.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>
4

6 回答 6

10

我有同样的问题,也尝试降级 WindowsAzure.Storage 没有成功。经过一整天的尝试禁用所有功能后,我发现从 startup.cs 中删除此行可以解决问题:

services.AddApplicationInsightsTelemetry(configuration);

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

于 2017-05-03T13:38:36.683 回答
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>
于 2017-10-11T12:27:42.643 回答
3

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

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

于 2017-09-03T18:45:21.730 回答
0

对于没有看到的人

services.AddApplicationInsightsTelemetry(configuration);

在他们的Startup.cs文件中,ApplicationInsight 配置可能在 中完成Program.cs,如下所示:

var host = new WebHostBuilder()
    .UseKestrel()
    .UseContentRoot(Directory.GetCurrentDirectory())
    .UseIISIntegration()
    .UseStartup<Startup>()
    .UseApplicationInsights() /* HERE */
    .Build();
于 2017-08-24T15:26:44.103 回答
0

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

你可以使用另一个存储模拟器或使用真正的 Azure Blob 存储。

于 2017-07-04T11:47:21.180 回答
0

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

原来我们在业务规则中安装了非asp.net核心包,然后在访问队列客户端时产生了Forbidden 403错误。

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

于 2017-07-06T22:22:09.000 回答