I was trying to connect Azure storage today and came across the "Configuration system failed to initialize" exception. I wanted to note this down in case other people have this issue, the issue was (as usual) caused by user error :)
I was trying to connect to Azure storage from a console app, enumerate over the containers defined in Azure and finally persist a folder & file - nothing complicated.
This was being caused by an erroneous app.config file:
What's interested is the nature of how Azure storage calsses are implemented, even though I'm using the CloudStorageAccount.Parse() method to pass the connection string under the covers this class appears to query the app config for a 'ConfigurationSettings' element and if it finds one it expects it to be a certain schema - the schema defining a service configuration you find in a Azure deployment project.
The minute I removed this section from the app.config everything worked as expected...
I was trying to connect to Azure storage from a console app, enumerate over the containers defined in Azure and finally persist a folder & file - nothing complicated.
class Program { static CloudBlobClient cloudBlobClient; static void Main(string[] args) { var connectionString = "DefaultEndpointsProtocol=https;AccountName=XXXservice;AccountKey=XXX=="; try { var account = CloudStorageAccount.Parse(connectionString); cloudBlobClient = new CloudBlobClient(account.BlobEndpoint.AbsoluteUri, account.Credentials); foreach (var containers in cloudBlobClient.ListContainers()) { Debug.WriteLine(containers.Uri); } UploadBlob("folder", "file1.txt", "This is the contents"); } catch (Exception exn) { Console.WriteLine(exn.Message); } } public static Uri UploadBlob(string path, string fileName, string content) { var cloudBlobContainer = cloudBlobClient.GetContainerReference(path); cloudBlobContainer.CreateIfNotExist(); cloudBlobContainer.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); var blob = cloudBlobContainer.GetBlobReference(fileName); blob.UploadText(content); return blob.Uri; } }When executed this code was throwing an exception from the ListContainers() method. The outer exception - "Configuration system failed to initialize" was not particularly helpful, the inner exception was reporting the actual error - "Unrecognized configuration section ConfigurationSettings...".
What's interested is the nature of how Azure storage calsses are implemented, even though I'm using the CloudStorageAccount.Parse() method to pass the connection string under the covers this class appears to query the app config for a 'ConfigurationSettings' element and if it finds one it expects it to be a certain schema - the schema defining a service configuration you find in a Azure deployment project.
The minute I removed this section from the app.config everything worked as expected...
Comments
Post a Comment