2011-04-19 31 views
7

情況是我爲一個類做了一個小錯誤修復,所以他們只想部署受影響的dll。他們停止了IIS,用我給他們的新站點替換了網站iis目錄的/ bin文件夾中的dll,並再次啓動了iis。有多個服務器,但他們只是改變了一個來試用它。他們仍然在服務器的事件日誌中看到相同的錯誤。看着堆棧跟蹤,我可以告訴它正在運行舊的DLL。網站更改後以某種方式運行緩存的dll

他們檢查了GAC,但沒有看到它。

我用反射器檢查了dll,以確認我給了他們正確的新dll。

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

+0

錯誤在哪裏?它是在aspx頁面還是在代碼中的某處? – Aliostad 2011-04-19 19:16:44

+0

這是在代碼中,我可以看到dll的一個組合的修復。 – dwidel 2011-04-19 19:43:14

回答

7

刪除您的臨時asp.net文件夾內容。但不知道爲什麼更新不會自動進行編譯。

+0

這種部署是否自動編譯?如果是這樣,可能是問題,因爲他們只是張貼DLL,而不是來源。 – dwidel 2011-04-19 20:03:47

+0

@dwidel,有時Asp.Net goofs,只是不會將文件複製到Temporary Asp.Net Files文件夾中。吹走它將確保它自己解決。 – Andy 2011-04-19 20:08:04

+0

@dwidel永遠不要將您的源放在服務器上。 @安迪是對的 - 有時候會發生這種情況。謝天謝地,這很少見。 – 2011-04-19 20:34:33

0

您不必停止IIS來部署更新,只需將它們複製過來即可。

此外,如果他們只複製DLL,但是您的修復程序位於.aspx文件中,則不會顯示。你應該真的做一個完整的部署。

+0

修復肯定是在DLL中,我可以使用反射器來拆解DLL並查看修復程序。 – dwidel 2011-04-19 19:39:50

+2

這不適用於數量驚人的情況。這取決於應用程序的開發方式。 IIS緩存文件,有時它需要吹出臨時文件。 – 2013-02-01 08:09:20

1

我們有同樣的問題,但有一些小問題,我們有很多很多網站,所以「清除所有溫度」並重新啓動IIS對我們來說不是一個好的選擇。所以我們需要更多的選擇來強制刷新。我在我們的質量保證機器下,在...「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,因此我停止了應用程序池,刪除了該文件夾,重新啓動並所有人都被部署了 - 太棒了!

但是....我們在部署到生產時遇到了同樣的問題,上面沒有工作。

長話短說,質量保證應用程序池被設置爲「啓用32位真」,但產量被設置爲「假」,以便督促臨時文件在居住: 「C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319「改爲(\ Framework64 \而不是\ Framework \)。

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