30
votes

I am trying to configure some key/value pairs for my Azure web application using app settings section on Windows Azure preview portal.

enter image description here

Now I am trying to read values like below

ConfigurationManager.AppSettings["MyWebApp.DbConnectionString"];

but it returns null values.

Reading app settings from Web.config in my web application works fine.

3
What do you mean by Reading app settings later in my web application works fine.? Under what conditions you're getting this value as null? Please update your question with these details.Gaurav Mantri
As a test, does it work if you use a simple name without periods?David Ebbo

3 Answers

41
votes

I found the solution.

Keep values in web.config as well as in Azure App setting. When you are running/debugging application on your local environment it picks values from web.config.

When you deploy application on Azure it picks values from App setting.

//Below code work for both.
ConfigurationManager.AppSettings["KeyName"]

Keep key name same in web.config as well as in Azure app setting.

20
votes

In Azure, there are a few different ways of retrieving Application Settings and Connection Strings. However, connection strings work a little differently than vanilla application settings.

Application Settings can be retrieved by any method, regardless of whether or not they are present in the Web.config file.

Connection Strings can also be retrieved by any method if the string is defined in Web.config. However, if the connection string is NOT defined in Web.config, then it can only be retrieved using the Environment Variable method.

Retrieving as Environment Variable

Environment.GetEnvironmentVariable("APPSETTING_my-setting-key");
Environment.GetEnvironmentVariable("SQLAZURECONNSTR_my-connection-string-key");

Note that the keys must be prepended with a string designating their type when using this method.

All Application Settings use the APPSETTING_ prefix.

Connection Strings have a different prefix depending on the type of database selected when creating the string in the portal:

"Sql Databases" --> "SQLAZURECONNSTR_my-connection-string-key"
"SQL Server" --> "SQLCONNSTR_my-connection-string-key"
"MySQL" --> "MYSQLCONNSTR_my-connection-string-key"
"Custom" --> "CUSTOMCONNSTR_my-connection-string-key"

For a full overview, see the Windows Azure Web Sites documentation.

1
votes
System.Environment.GetEnvironmentVariable("SERVICEBUS_CONNECTION")

works great!