How and where to define an environment variable on Azure

asp.net MvcAzureModel View-ControllerEnvironment Variables

asp.net Mvc Problem Overview


I have an ASP.NET MVC web application deployed to Azure. I'm reading my setting using the GetEnvironmentVariable(...) method.

The problem is that I can't find a way to define this environment variable in Azure Portal. Where can I do that?

I don't want to have this stuff in a file. Data that will be there are credentials.

asp.net Mvc Solutions


Solution 1 - asp.net Mvc

I assume you are using Azure App Service (formerly known as Azure Websites).

To define your own environment variable, click to your site → All SettingsApplication settings:

Enter image description here

Add an app setting in the "App settings" section:

Enter image description here

You can verify the value from the debug console.

Going to https://{your site name}.scm.azurewebsites.net/DebugConsole:

Enter image description here

Solution 2 - asp.net Mvc

I came across this question when facing the same problem myself. Well, just to give a clearer answer which I found at blog.elmah.io.

All you need to do is:

  1. Include the new appsetting.{env}.json in the publishOptions in file project.json.
  2. Go to Azure Portal and open the web application.
  3. Select application settings.
  4. Add an entry for ASPNETCORE_ENVIRONMENT and set it to whatever you want.

That's it.

Solution 3 - asp.net Mvc

In the new version 2021 go to the resource -> Configuration.

Then click on "New application settings".

Then add "ASPNETCORE_ENVIRONMENT" as key and click on OK then Save. enter image description here

Note that you must have the appsettings.(environment).json file for .Net Core.

Solution 4 - asp.net Mvc

I know OP specified in the portal, but command line is more repeatable. To do it using Azure CLI:

az webapp config appsettings set -n $webappname -g $resourceGroupName --settings ConnectionStrings__Default=$connectionString

To set an environment variable ConnectionStrings__Default to the variable $connectionString

Solution 5 - asp.net Mvc

(2019 version) Navigate to your AppService in the Azure cloud portal then Configuration.

Solution 6 - asp.net Mvc

Actually this solves my problem (which I found yesterday - and it's on Scott Hanselman's blog also):

Best practices for private config data and connection strings in configuration in ASP.NET and Azure

TLDR;

Put settings in a separate file that doesn't go to the repository and are not being deployed to the server. Next define missing variables in app settings like Xiaomin Wu showed.

Solution 7 - asp.net Mvc

In these modern times, when publishing from Visual Studio 2019, on the publish page there is a link called "Manage Azure App Service settings". In there you can create and define environment variables that get set when you publish. Very easy if you know where to look!

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJaroslaw StadnickiView Question on Stackoverflow
Solution 1 - asp.net MvcXiaomin WuView Answer on Stackoverflow
Solution 2 - asp.net MvcbinjiezhaoView Answer on Stackoverflow
Solution 3 - asp.net MvcKishan VaishnavView Answer on Stackoverflow
Solution 4 - asp.net MvcLee RichardsonView Answer on Stackoverflow
Solution 5 - asp.net MvcMarwaAhmadView Answer on Stackoverflow
Solution 6 - asp.net MvcJaroslaw StadnickiView Answer on Stackoverflow
Solution 7 - asp.net MvcJohnView Answer on Stackoverflow