2011-07-08 38 views
0

在開發我的ASP.NET網站的過程中,我遇到了一個奇怪的問題。奇怪的ASP.NET臨時DLL FileNotFoundException!

事實:

  • 該項目是一個 「網站」 不是Web應用程序
  • 應用程序池下的 「本地系統」 運行
  • IIS 7.0是使用
  • 殺死IIS工作進程或重新啓動iis問題消失了。

我隨機從隨機位置得到以下錯誤!

Could not find file 'C:\Windows\TEMP\rksbjov5.dll'. 

where each time dll name is something random. 

有沒有人有過這個問題?任何解決方案或爲什麼會發生這種情況?

+0

您是否嘗試更改應用程序池的用戶。該TEMP DLL可能是您每次更改自動生成的DLL。可能由於某種原因,編譯器在使用時無法寫入該文件。可能是用戶權利問題。 –

+0

我做了,正如我在問題中提到的那樣,應用程序池在「本地系統」下運行,這是我機器上的絕對神! –

+0

在編譯時,可能無法將DLL複製到目標,因爲它正在被本地系統使用? –

回答

2

這是一個已知的問題...

它,因爲當你在調試在Visual Studio中的網站你經常收到一舉兩得的事情中途停止,然後再發生這樣的內存泄漏的文件被隨意鎖定,那麼重建發生而不是一切都被重建。

執行IIS重置,然後沖洗掉的文件夾C asp.net臨時文件:\ WINDOWS \ microsoft.net \你的框架版本\ TEMP文件asp.net \

您將無法刪除所有這些文件沒有iis重置。

這只是視覺工作室和IIS之間不理想集成的一個標誌......這就是爲什麼visual studio自帶了可以使用的Web服務,因爲在每次重建時,服務器都會被丟棄,應用程序會重新編譯,服務已重新啓動,應用程序/站點重新加載到新的Web服務中。

這是一個特別煩人的問題,當你使用數據庫連接之類的事情時,不要關閉它們,在跳出代碼塊之前(通常在調試時發生)認爲它與調用gc.colect很相似沒有實際標記任何垃圾收集。

煩我知道。

+0

謝謝,很好的解釋。 –