In ASP.NET Core you can specify an environment by setting the 'ASPNETCORE_ENVIRONMENT' environment variable on your server. Yesterday however I wanted to setup a second environment on the same machine. To achieve this I added a second website to IIS and set the environment variable through a parameter in my web.config:
Unfortunately after doing that my application no longer worked. In the Event Viewer I could see the following error message:
Application: dotnet.exe
CoreCLR Version: 4.6.26628.5
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ArgumentException: Item has already been added. Key in dictionary: 'ASPNETCORE_ENVIRONMENT' Key being added: 'ASPNETCORE_ENVIRONMENT'
at System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add)
at System.Environment.ToHashtable(IEnumerable`1 pairs)
at System.Environment.GetEnvironmentVariables()
at Microsoft.Extensions.Configuration.EnvironmentVariables.EnvironmentVariablesConfigurationProvider.Load()
at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers)
at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
at Microsoft.AspNetCore.Hosting.WebHostBuilder..ctor()
at Web.Program.Main(String[] args) in c:\Program.cs:line 10
It seems that ASP.NET Core doesn’t like that you try to set the same variable twice. Strange because I thought it worked on a previous version of .NET Core(I’m running on 2.1at the moment).
To fix it, I had to remove the environment variable from the system(restart the system) and set the environment for all applications through the web.config.
Anyone with a better solution?