0

我使用来自 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

希望我的下一次检查仍然有效(手指交叉)

4

2 回答 2

1

我猜问题的根源是您将App_Data\Dependencies文件夹提交到您的存储库中。这个文件夹是 Orchard 动态创建的,不应该在你的仓库中。

我怀疑如果你不这样做(通过使用.gitignore),一切都会正常工作,你不会得到这个错误。

于 2013-03-19T04:06:49.293 回答
0

您可以在部署前重新启动网站,这类似于回收应用程序池。只需从仪表板上的页脚点击重新启动按钮。

于 2013-03-13T08:37:56.497 回答