AspNetCoreModule – setting environment variables in web.config causes double entries with the same key (instead of overwriting existing ones) #235
Description
Environment
Windows 10, IIS with AspNetCoreModule hosting an Asp.NET Core application on top of full framework.
Steps to reproduce
Let’s say there are some existing environment variables already set on the system. In our case these were COR_ENABLE_PROFILING and COR_PROFILER. See screenshot.
In web.config we wanted to overwrite these settings like this:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\WebApplication4.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
<environmentVariables>
<environmentVariable name="COR_ENABLE_PROFILING" value="0x01" />
<environmentVariable name="COR_PROFILER" value="{B7038F67-52FC-4DA2-AB02-969B3C1EDA03}" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</configuration>
I looked into the environment variables for the process with Process Explorer and as you see both values are added to the process.
Expected behavior
The environment variables set in the web.config should overwrite the existing ones.
Current workaround
I created a runWebapplication.bat file, with the following content and in the web.config I replaced processPath=".\WebApplication4.exe" by processPath=".\ runWebapplication.bat".
@echo off
SET COR_ENABLE_PROFILING=0x01
SET COR_PROFILER={B7038F67-52FC-4DA2-AB02-969B3C1EDA03}
WebApplication4.exe