我使用来自 BitBucket 的 Git Deploy 将 Orchard CMS 网站部署到 Windows Azure。
就在我最近的更改中,我在尝试部署时遇到了错误:
该进程无法访问文件“C:\DWASFiles\Sites[MyWebsite]\VirtualDirectory0\site\wwwroot\App_Data\Dependencies\Joel.Net.Akismet.dll”,因为它正被另一个进程使用。
鉴于它的 Azure 网站,我不能“停止 AppPool”或类似的东西。我已经尝试停止该站点,但是在站点停止的情况下我无法进行部署。我不知道如何进一步排除故障。
尝试通过 ftp 更新
没有“重新启动”选项,但我可以停止并启动站点,这不起作用(502 Web 服务器错误)。
通过 ftp 删除 \App_Data\Dependencies 文件夹中的文件不起作用,并得到相同的错误。
停止站点,然后通过 ftp 上传文件确实有效。但是尝试通过 Git 重新部署,我得到了一个类似的错误:
命令:deploy.cmd 处理基本网站部署。KuduSync.NET 从:'C:\DWASFiles\Sites[MyWebsite]\VirtualDirectory0\site\repository' 到:'C:\DWASFiles\Sites[MyWebsite]\VirtualDirectory0\site\wwwroot' 错误:进程无法访问文件' C:\DWASFiles\Sites[MyWebsite]\VirtualDirectory0\site\wwwroot\App_Data\Dependencies\Markdown.dll' 因为它正被另一个进程使用。复制文件:'App_Data\Dependencies\dependencies.compiled.xml' 复制文件:'App_Data\Dependencies\dependencies.xml' 复制文件:'App_Data\Dependencies\Ionic.Zip.dll' 复制文件:'App_Data\Dependencies\Joel. Net.Akismet.dll' 复制文件:'App_Data\Dependencies\Markdown.dll' 在网站部署过程中出现错误。处理基本网站部署。
我确信它不仅仅是一个 dll,而是 \App_Data\Dependencies 文件夹中的所有 dll 在 Git 部署期间都不会“停止”。
尝试在 Azure 网站上设置另一个站点来执行 Git 部署
我已经为 Git 设置了另一个 Azure 站点来部署相同的代码分支,这工作正常。
但是当我将我的域名切换到新的 Azure 网站时,我的新网站不再工作,但我的旧网站可以接受 git deploy。
因此,我的域名指向它的网站,一定是有活动导致更新停止工作。有没有办法停止站点并进行 Git 部署?
因此,根据@David 的评论从我的仓库中删除 Dependencies 文件夹后,我收到了一个新错误:
命令:deploy.cmd 处理基本网站部署。KuduSync.NET 从:'C:\DWASFiles\Sites[MyWebsite]\VirtualDirectory0\site\repository' 到:'C:\DWASFiles\Sites[MyWebsite]\VirtualDirectory0\site\wwwroot' 错误:访问路径 'Joel. Net.Akismet.dll' 被拒绝。复制文件:'.gitignore' 删除文件:'App_Data\Dependencies\Joel.Net.Akismet.dll' 网站部署过程中出现错误。处理基本网站部署。
似乎 Kudu 同步发现 Dependencies 文件夹中没有文件,并试图删除它们!当我根本没有 Dependencies 文件夹时也会发生同样的情况 - 它试图删除 Dependencies 文件夹。
@David 是否有 kudu 忽略文件?
解决了!
好的,我坚持下去,我终于解决了。
- 我删除了整个 app_data 文件夹(先备份它),然后将其签入 Git。
- 这被推送到 Azure,给了我一个全新的 Orchard 站点
- 然后我重新添加了我的 app_data 但选择忽略 app_data/dependencies 文件夹
- 推送到 Git 并完美更新到 Azure
希望我的下一次检查仍然有效(手指交叉)