2009-05-26 54 views
3

編譯ASP.NET網站時,我一直在追尋一個神祕錯誤的兩天。錯誤是(非常有名的)CS0016:「無法寫入輸出文件[文件名] - 目錄無效」。CS0016:目錄無效錯誤

我發現經過兩天的調試,我的問題的原因是,NetworkService以某種方式沒有C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files 。我已經添加了「Everyone」文件夾的完全權限 - 但我仍然無法訪問http://localhost,我可以看到從SysInternals使用進程監視器時,NetworkService帳戶在嘗試創建DLL文件時收到「NAME NOT FOUND」該目錄。我的解釋是,它沒有足夠的權利文件夾莫名其妙。

但是 - 當我啓動Visual Studio並附加一個調試器時,這些文件使用我的域用戶(JohnDoe作爲參考)進行編譯,並且出於某種原因,工作正常 - 就好像域用戶帳戶包含比我更多的權限無法給我的機器上的本地用戶 - 這讓我很困惑。

我對你們的兩個問題是:爲什麼當我將「Everyone」全部權限添加到文件夾時,NetworkService仍然沒有權限來創建需要的臨時文件?我的JohnDoe域用戶有哪些權限,我無法在我的計算機上授予本地用戶的權限?

回答

3

您需要將NetworkService權限授予您的系統臨時目錄(Temp變量中的目錄)。這是因爲在移動到ASP.NET Temporary Internet Files目錄之前,臨時的asp.net文件首先被寫入該臨時文件夾。

+0

它已經有完整的權利 – kerbou 2009-05-26 11:46:38

+0

嗯,實際上我不確定,也許你應該試試這裏「http://support.microsoft.com/kb/825791/en-us」 – Galilyou 2009-05-26 12:09:50

2

事實證明,我有一個TEMP環境變量指向一個不再存在的RAM驅動器......它根本沒有提到的用戶問題。獲得的經驗:用戶和系統都有TEMP變量!那裏有兩個!!!我已經想到了這種情況,並改變了用戶的變量 - 但我錯過了有關係統的變量。不知何故,對於計算機來說,將臨時文件寫入其無法訪問的驅動器上的文件夾是有點困難的。...

Ø「#/ /(%」/#¤%「(/ =(」(!§ ##§¤%「!#!」!

結案。

0

我有這個問題了幾天,在一個新的客戶端。我使用的是VMware映像,指向源代碼上的共享。我給了用戶「大家」完全訪問,但仍然gettign問題。

因爲我將共享複製到VM磁盤,還沒有問題(迄今只嘗試了幾次,但看到一致成功與我的一貫失敗之前)。同時發生在VS2005和VS2008上。

0

在我的情況下,錯誤是由運行ASP.NET應用程序的帳戶的TEMP和TMP環境變量指向一個不存在的目錄引起的。