web-dev-qa-db-ja.com

IIS 7アプリケーションで環境変数を設定する方法は?

ASP.NETアプリケーションで環境変数COMPLUS_FORCEENC=1を設定する必要があります。この変数は、ワーカープロセスが効果を発揮するときに設定する必要があります。

したがって、私はこれをしました:

  1. コンピュータの管理コンソールを使用して新しいユーザーを作成します。
  2. パスワードを設定します。
  3. UsersおよびIIS_IUSRSのメンバーであることを確認してください。
  4. IISアプリケーションプールをそのユーザーを使用するように構成し、ユーザープロファイルを読み込みます。これは、デフォルトのプールではなくカスタムプールを使用しています。
  5. そのユーザーとしてログインして、変数を設定します。
  6. 再ログインして、変数が設定されていることを確認します。
  7. OSを再起動します。
  8. アプリケーションが読み込まれて機能することを確認します。

残念ながら、ASP.NETアプリは変数を認識しません。アプリ内から環境全体を印刷しました。

ワーカープロセスでプロセスエクスプローラーを使用すると、正しいユーザーで実行されていることがわかりますが、変数が設定されていません。また、TEMP変数はC:\Windows\Tempを指しており、(予想どおり)ユーザープロファイルの一時ディレクトリ(存在する)を指していません。これは、ユーザープロファイルが読み込まれていないことを示しています。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelistは、ロードされたユーザーのハイブを示します。そのユーザーのEnvironmentキーは正しく入力されているようです:

enter image description here

何を間違えたのですか?変数を表示するにはどうすればよいですか?

これはWindows 7マシンです。

5
boot4life

Windows 7 SP1は、IISの新しいデフォルト設定を導入しました。これにより、IISアプリケーションプールのプロファイル固有の環境変数が読み込まれなくなります。

したがって、Windows 7 SP1の場合、さらに次のファイルを編集する必要があります。

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

また、processModel要素のsetProfileEnvironmenttrueセクションのサイトアプリプールのapplicationPoolsに設定して追加します。

次のようになります。

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

詳細については Windows 7 SP1によりIntelliTraceコレクションがIISで失敗する を参照してください。

注:管理者権限でapplicationHost.configファイルを編集し、変更後にコンピューターを再起動する必要があります。

6
Sergey Vlasov

Asp.netページ内で環境変数を設定/作成するだけです

お気に入り:

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

これは、AppPoolのリサイクルやサーバーの再起動でも存続します。

私は この答え で完全に機能する例を持っています

0
Peter Hahndorf