由于文件已在 IIS 工作进程中打开,因此无法完成该操作

由于文件已在 IIS 工作进程中打开,因此无法完成该操作

我有一台 Windows Server 2008 R2,上面运行着几个网站,在开发过程中,我通常会将更新发布到此服务器。现在,我尝试发布更新,但失败了,提示文件正在使用中,错误消息如下:

"The action can't be completed because the file is open in IIS Worker Process"
"Close the file and try again."

我尝试过停止该网站,但这没有用。该网站与应该保持在线的网站在同一个应用程序池中运行,因此回收可能会破坏正在运行的网站(如果这是错误的,请纠正我)。

问题是:有没有办法“释放”文件上的锁定而不停止其他当前正在运行的站点?

答案1

您从哪个应用程序获取该消息?

似乎更有可能的是应用程序本身(或应用程序框架)比应用程序池本身锁定了文件。

将来,每个站点都将在其自己的应用程序池中运行,并考虑在其自己的应用程序池中单独运行任何需要重新启动的应用程序。

应用程序池是稳健性的单位;应用程序(或 ASP.Net 应用程序的 AppDomain)是一个具有逻辑但不完全分离的容器。

答案2

您必须停止 IIS 中的 WORKER。然后删除该文件。

答案3

请进入任务管理器-->进程,找到Internet信息服务或者找到工作进程并选择结束任务。

这解决了我的问题。我在构建应用程序时收到此错误,并尝试删除应用程序 DLL,以便在构建时重建 DLL。删除后,我收到错误“无法完成操作,因为文件在 iis 工作进程中打开”。

答案4

在任务栏中右键单击 IIS Express,然后将鼠标悬停在您的项目上。并选择停止您的项目。 https://stackoverflow.com/a/62502732/13787040

相关内容