Назад | Перейти на главную страницу

Как настроить переменные среды в приложении IIS 7?

Мне нужно установить переменную среды COMPLUS_FORCEENC=1 в приложении ASP.NET. Эта переменная должна быть установлена ​​в момент, когда рабочий процесс начинает оказывать влияние.

Поэтому сделал так:

  1. Создайте нового пользователя с помощью консоли управления компьютером.
  2. Установите пароль.
  3. Убедитесь, что он является членом Users и IIS_IUSRS.
  4. Настройте пул приложений IIS для использования этого пользователя и загрузите профиль пользователя. Здесь используется настраиваемый пул, а не пул по умолчанию.
  5. Войдите как этот пользователь, чтобы установить переменную.
  6. Выполните повторный вход, чтобы убедиться, что переменная установлена.
  7. Перезагрузите ОС.
  8. Убедитесь, что приложение загружается и работает.

К сожалению, приложение ASP.NET не видит эту переменную. Я распечатал всю среду из приложения.

Когда я использую Process Explorer в рабочем процессе, я вижу, что он работает под правильным пользователем, но переменная не установлена. Так же TEMP переменная указывает на C:\Windows\Temp а не (как ожидалось) во временный каталог профиля пользователя (который существует). Я понимаю, что это признак того, что профиль пользователя не загружается.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist показывает загруженный улей этого пользователя. В Environment ключ для этого пользователя выглядит правильно:

Что я сделал не так? Как сделать так, чтобы переменная появилась?

Это машина с Windows 7.

Windows 7 SP1 представила новый параметр по умолчанию для IIS, который предотвращает загрузку переменных среды, зависящих от профиля, для пулов приложений IIS.

Итак, для Windows 7 SP1 дополнительно необходимо отредактировать следующий файл:

%windir%\system32\inetsrv\config\applicationHost.config

и добавить processModel элемент с setProfileEnvironment установлен в true для пула приложений вашего сайта в applicationPools раздел.

Должно получиться так:

<add name="ASP.NET v4.0" managedRuntimeVersion="v4.0">
      <processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="true" />
</add>

Видеть Windows 7 SP1 вызывает сбой IntelliTrace Collection в IIS Больше подробностей.

Примечание. Вам следует отредактировать applicationHost.config файл с правами администратора и после изменения необходимо перезагрузить компьютер.

Просто установите / создайте переменную среды на странице asp.net

лайк:

 System.Environment.SetEnvironmentvariable("myvar", "my value", System.EnvironmentvariableTarget.user)

это должно пережить повторные циклы AppPool и даже перезагрузки сервера.

У меня есть полный рабочий пример на этот ответ