w3wp.exe在webservice处理后仍然锁定文件

3
我有一个web服务,并注意到在执行完该服务后,wwwroot文件夹中的一些dll文件仍然保持登记状态。
重启计算机后,问题得到解决。
我能否在我的代码中添加释放dll的操作?

这是一个WCF服务还是一个传统的ASMX服务? - John Saunders
嗨约翰,这是一个普通的网络服务。 - mouthpiec
1个回答

12
尝试回收运行您的 Web 服务的 AppPool,或者使用 iisreset。 命令将停止 IIS 并释放 dll 文件。 命令将重新启动 IIS。
如果您回收应用程序池,那么 dll 锁定将被释放,直到有人再次访问您的 Web 服务并获取新的锁定。

@mouthpiec - 如果你使用ADSI并且你的代码没有在同一个应用程序池下运行,那么你可以尝试从你的C#代码中重新启动应用程序池。但是不要尝试从你的代码中重新启动IIS实例,特别是如果你的代码正在运行在该IIS版本中(你的代码将会有效地关闭自己)。iisreset是一项管理类型的任务,应该始终手动完成,如果你需要执行它并且其他人正在使用服务器,你可能需要提前计划。 - slugster
@mouthpiec - 你能描述一下你想解锁dll文件的情况吗?这样更容易给出建议。 - Mikael Svenson
这个不起作用。网站和Web服务器都停止了,文件仍然被w3wp锁定,根据进程资源管理器显示。Windows 10。仍然完全无法使用。真是令人惊讶,这些文件锁定问题从XP时代就存在,至今仍未解决。 - Triynko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接