我遇到了一个问题,该问题最初由NULL
抛出Microsoft.CSharp.CSharpCodeGenerator
接收“拒绝访问”错误,试图写入不同的 IIS AppPool用户临时目录。
我有另一个应用程序实际上作为UnauthorizedAccessException: Access to c:\Users\[wrong-user]\AppData\Local\Temp
AppPool运行,而该应用程序 工作。但是,这是有道理的,因为它具有对其自己的用户目录的写访问权。
我已将错误缩小到[wrong-user]
返回其他IIS APPPOOL用户的路径这一事实,即使%USERPROFILE%
返回正确的路径。< / p>
如果我列举Environment.GetFolderPath(SpecialFolder.UserProfile)
,我会得到:
此外,通过Environment.GetEnvironmentVariables(User)
手动访问用户的环境变量,确认它只是HKEY_USERS/[SID]/Environment
不正确:
答案 0 :(得分:0)
问题最终导致setProfileEnvironment
隔离了每个应用程序池的工作进程的环境变量,尽管false
system.applicationHost/applicationPools/applicationPoolDefaults
已设置为false
USERPROFILE
}}。由于没有任何应用程序池覆盖它,它们都收到相同的值,因此共享公共环境变量。
我不知道它是如何设置为true
的,也不知道如何将共享的{{1}}环境变量设置为一个应用程序池而不是另一个应用程序池,而是将默认值设置回{{1}解决了这个问题。
正是这个having a default value of true
according to the documentation帮助我找到原因,尽管问题不同。