I'm developing an ASP.Net MVC 4 app and I'm using Azure Blob to store the images that my users are going to upload. I have the following code:
var storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnection"].ConnectionString);
var blobStorage = storageAccount.CreateCloudBlobClient();
//merchantKey is just a GUID that is asociated with the merchant
var containerName = ("ImageAds-" + merchant.merchantKey.ToString()).ToLower();
CloudBlobContainer container = blobStorage.GetContainerReference(containerName);
if (container.CreateIfNotExist())
{
//Upload the file
}
as soon as the if statement is excecuted I'm getting the following exception:
{"The remote server returned an error: (400) Bad Request."}
I thought it was the container's name but I don't see anything wrong with it. The connection string seems to create a good storage with all details for the blob. I'm at a loss. I've researched the web and everyone is saying it's a naming problem but I can't find anything wrong with it.
Test Container name that I used: imageads-57905553-8585-4d7c-8270-be9e611eda81
The Container has the following uri: {http://127.0.0.1:10000/devstoreaccount1/imageads-57905553-8585-4d7c-8270-be9e611eda81}
UPDATE:
I have changed the container name to just image
and I still get the same exception. also the development connection string is as follows: <add name="StorageConnection" connectionString="UseDevelopmentStorage=true" />
As you found through your research, the problem is the name.
You say that your test container is named imageads-57905553-8585-4d7c-8270-be9e611eda81
, but in your code you are using ImageAds-57905553-8585-4d7c-8270-be9e611eda81
. Notice the difference in capitalization. If you switch your container name to all lower case it will work correctly.
For more information, see #3 under Container Names at Naming and Referencing Containers, Blobs, and Metadata:
3. All letters in a container name must be lowercase.