[英]IIS 7.5 with process idenity set to user has wrong USERPROFILE
[英]IIS ApplicationPool user has incorrect USERPROFILE / TEMP value
我遇到了一個最初由Microsoft.CSharp.CSharpCodeGenerator
公開的問題,拋出了UnauthorizedAccessException: Access to c:\\Users\\[wrong-user]\\AppData\\Local\\Temp
接收到“拒絕訪問”錯誤,試圖寫入另一個 IIS AppPool用戶的臨時目錄。
我有另一個應用程序實際上作為[wrong-user]
AppPool運行,該應用程序確實有效。 但是,這是有道理的,因為它具有對其自己的用戶目錄的寫訪問權。
我已經將錯誤縮小到%USERPROFILE%
返回不同IIS APPPOOL用戶的路徑這一事實,即使Environment.GetFolderPath(SpecialFolder.UserProfile)
返回正確的路徑。
如果我枚舉Environment.GetEnvironmentVariables(User)
,我得到:
此外,通過HKEY_USERS/[SID]/Environment
手動訪問用戶的環境變量,確認它只是%USERPROFILE%
不正確:
問題最終是setProfileEnvironment
,它隔離了每個應用程序池的工作進程的環境變量,在system.applicationHost/applicationPools/applicationPoolDefaults
上設置為false
,盡管它根據文檔具有默認值true
。 由於沒有任何應用程序池覆蓋它,它們都收到相同的值,因此共享公共環境變量。
我不知道它是如何設置為false
,也不知道如何將共享的USERPROFILE
環境變量設置為一個應用程序池但從未設置為另一個應用程序池,但將默認值設置為true
解決問題。
盡管問題不同,正是這個問題/答案幫助我找到了原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.