2011-04-26 94 views
2

我正在運行64位計算機。我的應用程序池被配置爲使用NETWORK SERVICE。當它運行在64位模式下時,我的應用程序運行良好。使用Enable32BitAppOnWin64的IIS權限問題

當以32位模式運行(應用程序池上的標誌Enable32BitAppOnWin64)時,我經常會遇到IIS無法訪問它的臨時文件夾的權限錯誤。如果我更改web.config中的tempDirectory,則問題會暫時解決。在我對應用程序進行另一次更改之後,它會經常返回。

實施例時tempDirectory = 「C:\ TEMP \ iistemp4」 訪問路徑 'C:\ TEMP \ iistemp4 \ tbmpos \ a93ceaf9 \ c953db72 \的ResX \ header.ascx.resources' 被拒絕。 ---> System.UnauthorizedAccessException:訪問路徑'c:\ temp \ iistemp4 \ tbmpos \ a93ceaf9 \ c953db72 \ ResX \ header.ascx.resources'被拒絕。

顯然,網絡服務可以訪問該文件夾,因爲它實際上創建了它。恢復到64位模式可解決此問題。

進程監視器顯示: 12:40:47.7314293 PM的w3wp.exe 6184的CreateFile C:\ TEMP \ iistemp4 \ tbmpos \ a93ceaf9 \ c953db72 \的ResX \ header.ascx.resources拒絕訪問所需的訪問:通用寫,讀屬性,處理:OpenIf,選項:同步IO非警報,非目錄文件,打開否調用,屬性:n/a,ShareMode:無,AllocationSize:0

這是我可以看到的唯一訪問在進程監視器中。

但是,如果我使用Windows資源管理器打開文件夾,我會在Information:Owner,DACL和Owner,Group,DACL上獲得一些'BUFFER OVERFLOW'。 IIS是否以不正確的權限創建文件?

任何想法?

+0

我也有這些配置選項,以防萬一:batch =「false」optimizeCompilations =「true」 – 2011-04-26 16:54:21

回答

0

是否因資源共享而失敗?嘗試使用像filemon這樣的工具來觀看。

+0

從進程監視器添加的信息 - 文件沒有在其他地方使用,但似乎揭示了文件系統權限的問題 – 2011-04-26 16:48:46

+0

更改完全信任所有人的權限並確保錯誤繼續發生。 – lsalamon 2011-04-26 17:44:10

+0

它已經完全信任 – 2011-04-26 18:03:58

1

感謝過程監視器,我意識到在我的c:\ temp \中設置了奇怪的權限,並強制傳播給所有的孩子。這在奇怪的背景下造成了怪異感,比如這個。

我轉移到另一個文件夾沒有任何繼承權限,清理權限,使網絡服務完全訪問,它似乎解決了。

+0

對於標準的IIS安裝,Temporary ASP.NET Files文件夾對於32位和64位是不同的。我們更改了enable32BitAppOnWin64 = true並且修復方法是將訪問設置從32位文件夾複製到64位,C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files' – rob 2017-10-26 10:32:21