在我的測試機器上運行(Windows XP,IIS5.1)以下代碼在C#.NET WebService(.SVC)進程標識(使用machine.config中指定用戶)IIS6 WebService下的Environment.GetFolderPath(Environment.SpecialFolder.ApplicationFolder)返回的路徑錯誤
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
正確返回
c:\Documents and Settings\myUserName\Application Data
然而,在(終端服務)Windows 2003的計算機上運行IIS6和執行相同的代碼,但現在用ApplicationPool到指定相同的進程標識該方法返回:
- 名爲myUsername所屬的組IIS_WPG(甚至試圖聯繫)
- 到Environment.UserName呼叫:
c:\Documents and Settings\Default User\Application Data
東西Win2003的/ IIS6的機器上運行,而我已籤正確返回myUserName
- 調用Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);也返回了「默認用戶」的路徑,同樣與DesktopDirectory
- 登錄名爲myUsername並確保C:\ Documents和Settings \ MyUserName輸入存在
- 運行完全相同的代碼在Windows .NET應用程序2003盒子,這工作並返回正確的路徑。
我很困惑,它只發生在IIS6下運行時。這幾乎就像它認爲呼叫來自網絡服務或本地系統用戶,它不檢查運行應用程序池的標識。
順便說一句,當我看着procmon中,看是從它沒有這樣的問題讀取和寫入C中的Web服務稱爲C++應用程序:\ Documents和Settings \ MyUserName輸入\ ApplicatonData,它似乎並不有問題,也許它會以不同的方式建立路徑。
我開始認爲這可能是.NET中的一個bug?
謝謝。
Tom Deloford
這絕對不是一個錯誤。 – leppie 2010-10-15 15:22:17
有用的評論 – 2010-10-15 15:23:18
你是對的它是由設計。 – 2010-10-17 13:52:01