2013-02-27 277 views
15

簡訊編譯錯誤CS0016:無法寫入到輸出文件

當我嘗試瀏覽我的網站,我收到以下錯誤信息:

CS0016:無法寫入到輸出文件'C:\ WINDOWS \ Microsoft.NET \ Framework64 \ V2.0.50727 \臨時ASP.NET文件\ WWW \ XXX \ YYY \ ZZZ \ abdll' - '目錄名稱是無效的'

詳細

我有我的開發PC上的兩個web站點(假名):

  • WEB2 - 這是在解決了V2的應用程序池使用.net 3.5和運行用ASP.NET。 0 .NET框架,並以集成模式運行。這是使用Visual Studio 2010開發的
  • Web4 - 這是使用.NET 4.5編寫的ASP.NET,並運行在可解決v4.0 .NET框架的AppPool中,並以集成模式運行。這是使用Visual Studio 2012

最近開發的,我在VS2012一直致力於WEB4幾乎一直工作得很好,但是有一天,我試圖運行的WEB2.0,得到了上面顯示的異常。

奇怪的是,我上面用字母「zzz」代替的部分路徑似乎指向德語語言路徑,因爲它是「\ de-DE \」 - 我沒有用德語操作,所以我我不知道它從哪裏得到這個想法。

有一件事幾乎可以肯定是不相關的,但是由於某種未知的原因,我覺得有必要提一下:我在Visual Studio 2012中使用性能分析工具的時候,這個問題首次出現,我不知道如果這可能對我的電腦做了一些改變......?

嘗試的修復

有這方面在互聯網上相當多的線程;一些線程成功地在文件訪問權限被修改的時候終止,而另一些線​​程在一個有點絕望的聲音筆記上完成了......我已經完成了將PC上的所有相關探測目錄上的NTFS權限與其同事的NTFS權限進行比較的過程這臺機器還在工作。不幸的是,那裏沒有任何喜悅。

我也有未安裝asp.net 2.0和重新使用安裝了它:

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -u 
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -ir 

,並再次,沒有喜悅,在那裏無論是了。

我的Web4繼續運行不受影響。

另外FYI:在Win7 x64上使用IIS 7.5。

我現在正轉向更廣泛的觀衆,希望將我目前的絕望狀態變爲成功之一。

謝謝大家

格里夫

+0

因此您確定臨時ASP.NET文件和C:\ Windows \ temp文件夾具有完全控制權限的IIS_IURS和NETWORK SERVICE用戶? – 2013-02-27 19:51:25

+1

他們和我的同事一樣...... **臨時ASP.NET文件**:IIS_IUSRS具有修改+特殊權限;網絡服務沒有被提及。 ** Windows Temp **:IIS_IUSRS具有特殊權限;網絡服務已修改。 我改變了他們,讓他們都有完全控制並做了IISRESET。 完全相同的錯誤消息。 – DrGriff 2013-02-28 07:02:25

+0

有一件事沒有經過測試 - 我們有一個新的防病毒服務,我無法關閉(由於策略無法停止服務)。這可以以任何方式負責?如前所述,它不會影響我在使用.NET 4的AppPools下運行的網站,只是那些使用.NET 2的網站。 – DrGriff 2013-02-28 07:13:49

回答

9

答案是使用procmon中發現:

http://technet.microsoft.com/en-us/sysinternals/bb896645

臨時asp.net文件在用戶的臨時文件夾首次創建和然後移到這個文件夾中。對於某些尚未知道的原因,我的Web2站點(.NET 2 AppPool)的編譯現在使用與我的Web4(.NET 4 AppPool)站點相同的文件夾。

我使用ProcMon識別「訪問被拒絕」的所有結果並給出了IIS_IUSRS組寫入權限(並且在一種情況下 - C:\ Users \ ASP.NET V4.0集成 - 修改權限)。

我不知道爲什麼編譯使用「錯誤」的文件夾,我懷疑我可能在某些情況下過度提高了權限,但現在它正在工作。

+0

這讓我頭暈目眩。我已經嘗試了幾乎所有關於這個問題的發現。我發現我的臨時變量(temp/tmp環境變量)指向一個用戶文件夾,因此將它們重新映射到一個全局文件夾,我添加了權限。沒有運氣。只有在浪費了半天的時間之後,我發現了這一點,並且給了它最後一槍。謝謝! – Ben 2014-07-24 05:11:53

+0

非常感謝,ProcMon是一個救生員 – mimo 2014-11-18 12:09:16

+0

ProcMon讓我理順了。我已經刪除並重新創建「C:\ Windows \ Temp」來釋放一些空間,這會消除文件夾上的安全性。即使應用程序在抱怨「c:\ Windows \ .. \ Temporary ASP.NET Files」,但實際上並不是問題所在。 – NTDLS 2015-03-05 16:23:26

39

在IIS管理器中,在應用程序池的高級設置中,確保「Process Model> Load User Profile」設置爲「True」。

我有這個完全相同的問題。我嘗試更改權限,禁用防病毒,創建新的應用程序池,並重新安裝.NET。我甚至創建了一個只有「Default.aspx」頁面的新網站,並試圖查看該網站。即使該網站有編譯錯誤。最後,我注意到我的應用程序池(乾淨的測試站點和主站點)對於加載用戶配置文件設置具有非默認值「False」。我將其設定爲真,問題就消失了。

+6

賓果!!!!!!!!!! – 2013-09-23 16:01:19

+2

這爲我節省了冠狀動脈。 – 2014-05-11 02:02:04

+0

瀏覽谷歌數小時後,答案!謝謝! – RASG 2014-06-02 14:52:08

4

如果以上的答案沒有解決它適合你,檢查你的環境變量(計算機右鍵 - >屬性 - >高級系統設置 - >高級選項卡 - >環境變量

確保(完全訪問網絡服務,IIS_IUSRS)

注意:不要只檢查頂部的兩個變量,查看系統變量下的滾動菜單。可能會找到配置的變量。

+0

謝謝@JohnSmith這是我的問題。該路徑指向的驅動器在重新啓動時不再存在。 – 2015-11-20 09:04:44

3

它可能不是原因,但是這個錯誤st在嘗試使用Instrumentation方法運行VS 2010性能嚮導後出現的問題。

快速修復我的DEV環境:將應用程序的應用程序池的標識更改爲LocalSystem。

+0

謝謝,這是我的App Pool用戶身份的問題。 – Gilles 2016-08-01 13:11:43

相關問題