IIS和ASP.NET正在锁定我的PInvoke dll

我有一个ASP.NET MVC网站,它使用内部dll来处理一些PInvoke.该DLL位于其他程序集旁边的/ bin文件夹中.这很好用,但是如果我想通过复制到现有文件(这是在测试服务器上)来用最新的文件集替换/ bin文件夹的内容,那么w3wp.exe工作者会锁定/使用PInvoke dll进程并且在您回收apppool或重新启动IIS之后无法替换.

这是标准行为还是我能以某种方式指示ASP.NET运行时采用类似于常规程序集的PInvoke dll的卷影副本?

最佳答案 AFAIK,如果IIS具有DLL的句柄,您将无法替换DLL.

你提到了APPPool Recycle和IIS Restart ……

我想你可能没有用过触摸你的web.config文件.我的意思是,在记事本中打开你的web.config,进行更改[比如添加空格并删除它]并保存文件.这将回收您的应用程序域,因此理想情况下应该发布程序集引用[除非它是共享程序集].

点赞