boo*_*ife 5 windows iis environment-variables user-profile
我需要COMPLUS_FORCEENC=1
在 ASP.NET 应用程序中设置环境变量。这个变量必须在工作进程开始生效时设置。
因此,我这样做了:
Users
和IIS_IUSRS
。不幸的是,ASP.NET 应用程序没有看到该变量。我从应用程序中打印了整个环境。
当我在工作进程上使用 Process Explorer 时,我看到它在正确的用户下运行,但未设置变量。此外,该TEMP
变量指向C:\Windows\Temp
而不是(如预期)用户配置文件的临时目录(存在)。我知道这是未加载用户配置文件的标志。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist
显示该用户的配置单元已加载。该Environment
用户的密钥似乎已正确填充:
我做错了什么?我怎样才能让变量出现?
这是一台 Windows 7 机器。
小智 6
Windows 7 SP1 为 IIS 引入了一个新的默认设置,以防止为 IIS 应用程序池加载配置文件特定的环境变量。
因此,对于 Windows 7 SP1,您还需要编辑以下文件:
%windir%\system32\inetsrv\config\applicationHost.config
Run Code Online (Sandbox Code Playgroud)
并在该部分中为您的站点应用程序池添加一个设置为的processModel
元素。setProfileEnvironment
true
applicationPools
它应该是这样的:
<add name="ASP.NET v4.0" managedRuntimeVersion="v4.0">
<processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="true" />
</add>
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅Windows 7 SP1 导致 IntelliTrace 收集在 IIS 上失败。
注意:您应该applicationHost.config
使用管理员权限编辑该文件,更改后您应该重新启动计算机。
只需在 ASP.NET 页面中设置/创建环境变量
喜欢:
System.Environment.SetEnvironmentvariable("myvar", "my value", System.EnvironmentvariableTarget.user)
Run Code Online (Sandbox Code Playgroud)
这应该可以在 AppPool 回收甚至服务器重新启动后继续存在。
我在这个答案中有一个完整的工作示例
归档时间: |
|
查看次数: |
11525 次 |
最近记录: |