c# - 在 asp.net web 应用程序中使用后无法删除托管 dll

标签 c# asp.net iis unmanaged

我在 ASP.net web 应用程序中使用 NHunspell。 NHunspell 包装了 Hunspellx86.dll 或 Hunspellx64.dll,它们都是非托管 dll。

问题是这样的:当我处理我的 NHunspell 对象(它从 kernel32.dll 调用 FreeLibrary)时,似乎 IIS 仍然卡在它上面 - windbg 和 tasklist/m 都证明了这一点。如果我尝试使用自动构建过程替换那个 dll,或者运行安装程序来更新我的 Web 应用程序,这就会有问题:一切都失败了,因为那个 dll 正在使用中。

我想知道是否有人可以证实我的怀疑,实际上是 IIS 缓存了它?另外,为什么我可以直接从 IIS 下删除托管 dll(即使 tasklist 报告 IIS 使用的那些 dll)?

最后,我正在寻找有关如何实际删除此 dll 以进行自动构建/安装的建议?

非常感谢!

最佳答案

如果您在 IIS 6 或更高版本上运行,您可以停止特定的应用程序池。但是,不覆盖文件的确切构建命令是什么?我们使用 TFS 构建自动化步骤将我们的文件复制到运行 IIS 的测试服务器,该服务器具有所有正在使用的 dll,这没有问题。我无法确认它是如何做到的,我怀疑它正在使用 XCOPY,但我不能确定。

关于c# - 在 asp.net web 应用程序中使用后无法删除托管 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9674767/

相关文章:

jquery - 当高度设置为自动时,如何使 gridview 显示两个滚动条

c# - .NET 6 Web API 应用程序中的错误响应不一致

iis - 在 Windows XP 下使用 DNS 和 IIS Express

PHP/IIS copy()/move_uploaded_file() 无法打开流 : Permission denied Warning

c# - jQuery 运行时错误 : Function Expected

c# - 如何在控制台应用程序中使用 UnityResolver?

c# - 如何在 LDAP 服务器上查找用户

asp.net - 如何在 ASP.NET MVC 中存储信息 "per browser tab"?

.net - 无法复制文件 Microsoft.SqlServer.Types

c# - Azure 管道未运行 NUnit 测试