How and where to define an environment variable on Azure
asp.net MvcAzureModel View-ControllerEnvironment Variablesasp.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 Settings → Application settings:
Add an app setting in the "App settings" section:
You can verify the value from the debug console.
Going to https://{your site name}.scm.azurewebsites.net/DebugConsole:
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:
- Include the new appsetting.{env}.json in the publishOptions in file
project.json
. - Go to Azure Portal and open the web application.
- Select application settings.
- 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.
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!