ASP.NETアプリケーションで環境変数COMPLUS_FORCEENC=1
を設定する必要があります。この変数は、ワーカープロセスが効果を発揮するときに設定する必要があります。
したがって、私はこれをしました:
Users
およびIIS_IUSRS
のメンバーであることを確認してください。残念ながら、ASP.NETアプリは変数を認識しません。アプリ内から環境全体を印刷しました。
ワーカープロセスでプロセスエクスプローラーを使用すると、正しいユーザーで実行されていることがわかりますが、変数が設定されていません。また、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コレクションがIISで失敗する を参照してください。
注:管理者権限でapplicationHost.config
ファイルを編集し、変更後にコンピューターを再起動する必要があります。
Asp.netページ内で環境変数を設定/作成するだけです
お気に入り:
System.Environment.SetEnvironmentvariable("myvar", "my value", System.EnvironmentvariableTarget.user)
これは、AppPoolのリサイクルやサーバーの再起動でも存続します。
私は この答え で完全に機能する例を持っています