Pages

2015-04-01

ASP.NET CS0016 Temp目錄存取拒絕錯誤

原來運作良好的IIS 6 on Win2003R2的ASP.NET 4.0網站,在佈署時出現「Compiler Error Message: CS0016: Could not write to output file 'c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\xxx – access is denied」錯誤訊息。

Error Msg

查了網路資訊,有些解法是把ASP.NET Temp輸出目錄的寫入權限給「NETWORK SERVICE」,但即使設定「完全控制」也沒用。

Dir Authority

在Win2003的IIS 6.0,ASP.NET執行的用戶權限為「NETWORK SERVICE」,很多目錄權限存取的問題,針對它給予授權即可。不同的網站可以設定各自的用戶權限,其綁定在網站的應用集區執行身份。下圖對應的英文用戶名稱分別為NETWORK SERVICE, LOCAL SERVICE, SYSTEM,它們也常常出現在使用Integrated Security存取SQL Server時產生的登入權限問題裏。

AppPool Role

我試了網路服務(NETWORK SERVICE)及本機服務(LOCAL SERVICE)的身份,一樣會有目錄存取拒絕的問題,最後使用本機系統(System)就運作正常,雖然它的權限過大會有警示訊息。

No comments: