通过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)\MSSQLLocalDB
为AzureStorageEmulatorDb51
访问: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>
答案 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