Asp.net

網站在更改後以某種方式執行記憶體的 dll

  • November 26, 2019

情況是我對一個類做了一個小錯誤修復,所以他們只想部署受影響的 dll。他們停止了 IIS,將網站 iis 目錄的 /bin 文件夾中的 dll 替換為我給他們的新 dll,然後再次啟動 iis。有多台伺服器,但他們只是將其更改為一台以進行嘗試。他們仍然在相關伺服器的事件日誌中看到相同的錯誤。查看堆棧跟踪,我可以看出它正在執行舊的 dll。

他們已經檢查了 GAC,但在那裡沒有看到。

我已經用反射器檢查了 dll,以驗證我給了他們正確的新 dll。

這是一個 asp.net 2.0 網站,伺服器是 2003。我不確定它最初是如何部署的,但它在 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary 中有一個舊 dll 的副本ASP.NET Files\NAME_services#################\assembly\dl3###################\ 和 D :\xxxx\Sites\NAME\Services\obj\Release。是否可以使用其中之一或建構舊的,甚至只是將其記憶體在記憶體中?

核對您的臨時 asp.net 文件夾內容。不過,不確定為什麼更新沒有自動編譯。

我們遇到了同樣的問題,但有輕微的並發症,我們有很多站點,所以“清除所有臨時”並重新啟動 IIS 對我們來說不是一個好的選擇。因此,我們需要更有選擇性地強制刷新。

在我們的 QA 機器上,在 …“C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files”下,我在文件資源管理器中搜尋了我們嘗試發布的部分文件名。該文件在類似以下文件夾中找到:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\4503212x\ad95664x,所以我停止了應用程序池,刪除了文件夾,重新啟動和所有當時部署了 - 太棒了!

但是….我們在部署到生產環境時遇到了同樣的問題,並且上述方法不起作用。

長話短說,QA 應用程序池設置為“啟用 32 位真”,但生產設置為“假”,因此產品臨時文件位於:“C:\Windows\Microsoft.NET\Framework64\v4.0.30319”代替(\Framework64\ 而不是 \Framework\ )。

如果清除臨時文件不起作用 - 仔細檢查您的框架,或在 C:\Windows\Microsoft.NET 文件夾級別及以下查找要刷新的文件。你可能會感到驚訝。

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