I am using Azure Storage Emulator version to test an asp.net core 2.1-rc1 web application on windows 10-x64 and WindowsAzure.Storage 9.1.1.
I have followed this guide to setup the Azure storage emulator.
https://learn.microsoft.com/en-us/azure/storage/common/storage-use-emulator
When I try to create the blob container I get this exception:
Microsoft.WindowsAzure.Storage.StorageException: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteAsyncInternal[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext, CancellationToken token) in C:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\WindowsRuntime\Core\Executor\Executor.cs:line 316
at Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer.CreateIfNotExistsAsync(BlobContainerPublicAccessType accessType, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken) in C:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\WindowsRuntime\Blob\CloudBlobContainer.cs:line 165
Request Information
RequestID:c4a44dcc-301e-002e-5ad0-f2637a000000
RequestDate:Wed, 23 May 2018 22:02:36 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:c4a44dcc-301e-002e-5ad0-f2637a000000
Time:2018-05-23T20:02:36.9987818Z
And I have found this in the exception additional information:-
"The MAC signature found in the HTTP request 'NeZGAEspShTRdpc/zFH++pS9YChlOczzEg0vcVGXF10=' is not the same as any computed signature. Server used following string to sign: 'PUT\n\n\n\n\n\n\n\n\n\n\n\nx-ms-client-request-id:e4b5b43c-ba27-45b1-8545-19db1c16a160\nx-ms-date:Wed, 23 May 2018 19:10:31 GMT\nx-ms-version:2017-07-29\n/devstoreaccount1/admins\nrestype:container'."
Here is my code:-
public static async Task InitializeContainersAsync()
{
try
{
//Use the emulator default credenitals
var credentials = new StorageCredentials("devstoreaccount1", "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==");
CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, false);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("testing_container");
await container.CreateIfNotExistsAsync();
}
catch (StorageException ex)
{
Console.WriteLine(ex);
}
}
If you want to use the Storage Emulator there's actually two options.
UseDevelopmentStorage=true.