none
GAC 問題 RRS feed

  • 問題

  • 我有一個Web應用程式,參考GAC中的.dll檔。

    若更新.dll檔並且重新註冊到GAC,web應用程式並不會立即參考新的.dll,一定要重新啟動IIS才行。

    請問有辦法不要重啟IIS,web應用程式就可以立即參考新的.dll嗎?

    謝謝~

    2011年2月10日 上午 09:29

解答

  • 建議你去 study 一下 DLL 的運作方式。

    DLL 是由應用程式 (IIS 的話是 w3wp.exe) 掛到執行環境的,在一般的開發方式 (使用加入參考的方式) 下,載入 DLL 是自動的,相對釋放 DLL 也會是自動。
    所以基本上除了重啟 Web 應用程式 (讓 w3wp.exe 重啟) 外,是無法更新 DLL 的。

    如果你真的想做這種機制,那麼你可以考慮使用晚期繫結 (late-binding) 的作法,自己寫程式來載入 DLL,這樣就可以自己處理 DLL 的釋放機制,也可以在下次載入時更新 DLL 的 code,但缺點是要用大量的 Reflection,而且無法享有 Visual Studio IDE 的 intellisense 能力。

    自己考量吧。


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/pages/StudyAzurecom-yun-duan-xue-tang/155855707799579
    • 已標示為解答 Boken0622 2011年2月11日 上午 01:09
    2011年2月11日 上午 12:26
    版主

所有回覆

  • Try to restart application pool of the web application.
    大家一齊探討、學習和研究,謝謝!
    Microsoft MVP, Microsoft Community Star(TW & HK), MCT,
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD
    2011年2月10日 上午 10:01
  • 首先,感謝回覆。

    restart application pool是可行的,

    但是我不想 重啟IIS或是restart application,

    因為這兩個動作會造成網站有一小段時間是不能work的(雖然時間可能很短)。

    請問有沒有辦法是即時更新,也就是說我在將.dll重新註冊到GAC時,網站也同步更新了。

    謝謝。

    2011年2月10日 上午 10:22
  • 建議你去 study 一下 DLL 的運作方式。

    DLL 是由應用程式 (IIS 的話是 w3wp.exe) 掛到執行環境的,在一般的開發方式 (使用加入參考的方式) 下,載入 DLL 是自動的,相對釋放 DLL 也會是自動。
    所以基本上除了重啟 Web 應用程式 (讓 w3wp.exe 重啟) 外,是無法更新 DLL 的。

    如果你真的想做這種機制,那麼你可以考慮使用晚期繫結 (late-binding) 的作法,自己寫程式來載入 DLL,這樣就可以自己處理 DLL 的釋放機制,也可以在下次載入時更新 DLL 的 code,但缺點是要用大量的 Reflection,而且無法享有 Visual Studio IDE 的 intellisense 能力。

    自己考量吧。


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/pages/StudyAzurecom-yun-duan-xue-tang/155855707799579
    • 已標示為解答 Boken0622 2011年2月11日 上午 01:09
    2011年2月11日 上午 12:26
    版主