2010-11-11 46 views
4

我有一個ASP.NET MVC網站,它使用一個內部DLL來處理一些PInvoke內容。該DLL位於其他程序集旁邊的/ bin文件夾中。這很好,但如果我想通過複製到現有文件(這是在測試服務器上)將/ bin文件夾的內容替換爲最新的一組文件,則w3wp.exe worker會鎖定/使用PInvoke dll進程並且不能替換,除非在您重新啓動應用程序池或重新啓動IIS之後。IIS和ASP.NET正在鎖定我的PInvoke dll

這是標準的行爲,還是我可以以某種方式指示ASP.NET運行時採取類似於常規程序集的PInvoke dll的影子副本?

回答

2

AFAIK,如果IIS有DLL的句柄,您將無法替換DLL。

你提到的應用程序池回收,並重新啓動IIS ...

我猜你可能沒有使用觸摸你的web.config文件。我的意思是,在記事本中打開web.config,進行更改(如添加空格並刪除它)並保存文件。這將回收您的應用程序域,因此應該最好發佈程序集引用[除非它是共享程序集]。

+0

我知道編輯web.config時的回收,我只是感到驚訝,我無法複製 - 替換PInvoke DLL類似於常規的.NET程序集,並尋找一些更深入的知識,如何可能會指示IIS/w3wp在文件上沒有硬手柄。 – 2010-11-12 08:03:23