无法将Web程序包部署到IIS网站
我已经创建了一个ASP.NET Core应用程序和Azure DevOps连续集成(CI)和连续交付(CD)管道。
我已经在本地计算机上创建并配置了自托管Windows代理作为服务。它按预期工作。
当我第一次运行CI / CD管道时,它成功运行,并且Web应用程序已成功发布到本地IIS。
问题是,当我向Azure DevOps git存储库提交另一个更新时,由于以下错误和警告,无法将Web包部署到我的本地IIS网站上
2019-08-21T10:56:59.1480862Z ##[error]Failed to deploy web package to IIS website.
2019-08-21T10:56:59.1492670Z ##[warning]Can\'t find loc string for key: Trytodeploywebappagainwithrenamefileoptionselected
2019-08-21T10:56:59.1493093Z ##[warning]Trytodeploywebappagainwithrenamefileoptionselected
2019-08-21T10:56:59.1493421Z ##[error]Error Code: ERROR_FILE_IN_USE
More Information: Web Deploy cannot modify the file 'DemoWebApp.dll' on the destination because it is locked by an external process. In order to allow the publish operation to succeed, you may need to either restart your application to release the lock, or use the AppOffline rule handler for .Net applications on your next publish attempt. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE.
Error count: 1.
我已经在发布配置文件(.pubxml)中配置了appOffline规则,并将EnableMSDeployAppOffline元素添加到PropertyGroup中,如下所示:
<PropertyGroup>
<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
</PropertyGroup>
如“更多信息”中的“了解更多网址http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE”所述。
仍然无法通过相同的错误和警告将Web包部署到我的本地IIS网站。
当我尝试手动重新部署几次后,它成功运行,否则失败,并出现相同的错误和警告。因为我认为文件在本地计算机进程中被锁定了一段时间。
当我从IIS版本文件夹中手动删除所有带有该锁定文件的文件时,它也成功运行。
需要帮助,该文件已被任何一个本地进程锁定。我找不到本地程序。我不知道这个问题。我也不知道我是否发现该过程如何解决该问题。这只是本地问题吗?
有人可以帮我吗?
答案 0 :(得分:1)
尽管已将 Take App Offline
选项设置了很长时间,但我还是遇到了同样的错误。那不可能是解决方案。这里发生了一些幻影错误,但我确实在没有重新启动服务器的情况下解决了它。
w3wp.exe
使用,即使该网站处于离线状态且应用程序池已停止。w3wp.exe
PID 与我尝试更新的应用程序相关。那时,我能够从目标目录中删除应用程序 DLL 并从 DevOps 管道中正常部署。
希望这不会在生产中发生。
答案 1 :(得分:1)
在“部署 IIS 应用程序”任务之前立即回收应用程序池。 向发布管道添加“WinRM - IIS Web 应用管理”任务。将配置类型设置为“IIS 应用程序池”,将“操作”设置为回收,然后在“应用程序池名称”字段中输入应用程序池名称。
回收应该解锁dll并允许它在部署步骤中被删除和替换。
答案 2 :(得分:0)