簡體   English   中英

為什么 ASP.NET 加載了錯誤版本的 Web 應用程序程序集?

[英]Why does ASP.NET load the wrong version of my web application assembly?

我在 Visual Studio 2008 中有一個 Web 應用程序,其中包含一個 Web 服務和幾個 Web 表單。 當我嘗試調試時,我的斷點都不可用; 如果我將鼠標懸停在它們上方,我會看到:

“不會打斷點,源碼和原版不一樣。”

加載的調試模塊列表包括我的程序集的舊版本 1.0.*。 我已將其更改為 1.1.0.0,但該版本從未被加載。 我嘗試停止 IIS 並從臨時 ASP.NET 文件中刪除文件,但是當我重新啟動它時,1.0.* 版本又回來了! 構建輸出肯定是 1.1.0.0 而不是 1.0.*,那么它可能來自哪里? 當我使用 VS Development Server 而不是 IIS 時,也會發生同樣的事情。

謝謝

當 DLL 緩存在 Temporary ASP.NET Files 文件夾中時,我已經看到了這種情況。 嘗試執行“全部重建”,如果仍然發生,請從臨時文件夾中刪除 DLL,或完全清除文件夾內容。

我有一個非常相似的問題:

  1. Web 應用程序引用包含資源的程序集。
  2. 當使用非默認文化(一種資源構建到衛星 *.resources.dll 程序集中)時,一些資源可以正常使用,但有些資源會回退到默認語言。
  3. 刪除臨時 ASP.NET 文件或 Clear\\Build 沒有幫助

問題是您可用於診斷程序集加載問題的大多數工具(用於加載程序集和路徑列表的 Process Explorer,用於程序集綁定日志的 fuslogvw)根本不顯示附屬程序集。

但最后我發現在我的 web 應用程序 bin 文件夾有舊版本的衛星程序集(仍然不知道它是如何到達那里的)並且它在程序集探測\\加載過程中獲得優先權...

看起來這是在文件 LastWriteTime 未更新時觸發的。 我可以通過使用完全相同的 LastWriteTime 的兩個完全獨立的 dll 構建來可靠地重現這一點,並將它們一個接一個地部署到 IIS 中。 如果我然后使用 GNU touch 更新文件 LastWriteTime,IIS 會選擇當前正確的版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM