Asp.net

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

  • February 27, 2013

在信中

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

CS0016: 無法寫入輸出文件 ‘c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\www\xxx\yyy\zzz\abdll’ - ‘目錄名稱無效’

詳細地

我的開發 PC 上有兩個網站(虛構名稱):

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

最近,我幾乎一直在 Web4 上的 VS2012 中工作,它工作正常,但是前幾天我嘗試執行 Web2 並得到了上面顯示的異常。

奇怪的是,路徑的一部分(我在上面用字母“zzz”替換)似乎指向德語路徑,因為它是“\de-DE\”——我不是用德語操作的,所以我不知道這個想法是從哪裡來的。

幾乎可以肯定不相關的一件事,但出於某種未知原因,我覺得值得一提:在此問題首次出現的前一天,我正在使用 Visual Studio 2012 中的性能分析工具,我不知道這是否可能對我的電腦進行了一些更改…??

嘗試修復

網際網路上有很多關於此的主題;一些執行緒以成功結束,其中文件訪問權限已被更改,而另一些執行緒則以有點絕望的聲音結束……我已經完成了將我的 PC 上所有相關探測目錄的 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 繼續執行不受影響。

另外僅供參考:在 Win7 x64 上使用 IIS 7.5。

我現在轉向更廣泛的受眾,希望將我目前的絕望狀態轉變為成功的狀態。

感謝大家

處理

使用 ProcMon 找到了答案:

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

臨時 asp.net 文件首先在使用者的 temp 文件夾中創建,然後移動到此文件夾中。由於一些未知的原因,我的 Web2 站點 (.NET 2 AppPool) 的編譯現在使用與我的 Web4 (.NET 4 AppPool) 站點相同的文件夾。

我使用 ProcMon 來辨識“拒絕訪問”的所有結果,並授予 IIS_IUSRS 組寫入權限(在一種情況下 - C:\Users\ASP.NET V4.0 Integrated - 修改權限)。

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

在 IIS 管理器中,在應用程序池的高級設置中,確保“程序模型 > 載入使用者配置文件”設置為“真”。

我有這個完全相同的問題。我嘗試更改權限、禁用防病毒、創建新的應用程序池並重新安裝 .NET。我什至創建了一個只有“Default.aspx”頁面的新站點並嘗試查看該站點。甚至那個站點也有編譯錯誤。最後,我注意到我的應用程序池(乾淨的測試站點和主站點)的載入使用者配置文件設置具有非預設值“False”。我將其設置為true,問題就消失了。

引用自:https://stackoverflow.com/questions/15119880