Como configurar variáveis de ambiente em um aplicativo do IIS 7?

1

Eu preciso definir a variável de ambiente COMPLUS_FORCEENC=1 em um aplicativo ASP.NET. Essa variável deve ser definida no momento em que o processo do trabalhador começa a ter efeito.

Portanto, fiz isso:

  1. Crie um novo usuário usando o console de Gerenciamento do Computador.
  2. Defina uma senha.
  3. Certifique-se de que é membro de Users e IIS_IUSRS .
  4. Configure o pool de aplicativos do IIS para usar esse usuário e carregar o perfil do usuário. Isso está usando um conjunto personalizado, não o padrão.
  5. Faça login como esse usuário para definir a variável.
  6. Entre novamente para garantir que a variável esteja definida.
  7. Reinicie o sistema operacional.
  8. Verifique se o aplicativo é carregado e funciona.

Infelizmente, o aplicativo ASP.NET não vê a variável. Eu imprimi o ambiente inteiro de dentro do aplicativo.

Quando uso o Process Explorer no processo de trabalho, vejo que ele é executado sob o usuário correto, mas a variável não está definida. Além disso, a variável TEMP aponta para C:\Windows\Temp e não (conforme esperado) para o diretório temporário do perfil do usuário (que existe). Eu entendo que isso é um sinal de que o perfil do usuário não está sendo carregado.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist mostra a ramificação desse usuário carregada. A chave Environment desse usuário parece estar preenchida corretamente:

O que eu fiz de errado? Como posso fazer a variável aparecer?

Esta é uma máquina com Windows 7.

    
por boot4life 13.07.2016 / 18:25

2 respostas

2

Windows 7 SP1 introduced a new default setting for IIS that prevents the loading of profile specific environment variables for IIS application pools.

Portanto, para o Windows 7 SP1, você também precisa editar o seguinte arquivo:

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

e adicione um elemento processModel com setProfileEnvironment definido como true para o pool de aplicativos do site na seção applicationPools .

Deveria ser assim:

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

Consulte o Windows 7 SP1 faz com que o IntelliTrace Collection falhe no IIS para obter mais detalhes.

Observação: você deve editar o arquivo applicationHost.config com direitos de administrador e, após a alteração, deve reinicializar o computador.

    
por 19.10.2016 / 20:30
0

Basta definir / criar a variável de ambiente em uma página asp.net

como:

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

isso deve sobreviver às reciclagens do AppPool e até mesmo reinicializações do servidor.

Eu tenho um exemplo completo de trabalho em esta resposta

    
por 13.07.2016 / 19:53