【发布时间】:2015-02-18 11:26:19
【问题描述】:
我有 4 个 azure 网站,每个网站都有自己的“登台”部署槽。所有这些暂存槽都使用相同的源代码存储库 (git) 进行部署。
这是相同的解决方案,每个 azure 网站都使用“项目”设置(azure 网站 --> 配置选项卡 --> 应用程序设置)编译自己的项目。
事实上几乎总是运行良好,但有时(10% 的时间)它会抛出一个恼人的实现错误:
KuduSync.NET 从:'D:\local\Temp\a8b0a9fb-c31c-45a1-92d3-55b80315a6dc' 到:'D:\home\site\wwwroot' 错误:无法更改当前正在使用的文件“D:\home\site\wwwroot\Web.config” 复制文件:'Web.config' 失败 exitCode=1, command="kudusync" -v 50 -f "D:\local\Temp\a8b0a9fb-c31c-45a1-92d3-55b80315a6dc" -t "D:\home\site\wwwroot" -n "D: \home\site\deployments\6c8e6d6ba36c35d7adf1c0a2f93f5397df2600d1\manifest" -p "D:\home\site\deployments\52aaaa055bb165ee2b0b7ecbb78011b252ed001a\manifest" -i ".git;.hg;.deployment;deploy.cmd" 网站部署过程中发生错误。
我明白这意味着什么,但它对我来说毫无意义。登台网站几乎从不使用(仅用于测试目的),并且“始终可用”设置为 false。
有关更多详细信息,一些临时网站会引发错误,而另一些则不会。
我现在要做的就是稍等片刻(5 分钟、10、15...),重试部署并祈祷比特之神。
谁知道问题出在哪里?
提前致谢。
编辑
我已经按照@beatcracker 提出的步骤修改了 deploy.cmd 并在 KuduSync 步骤之前添加了两行:
del "%DEPLOYMENT_TARGET%\web.config.bak"
rename "%DEPLOYMENT_TARGET%\web.config" "%DEPLOYMENT_TARGET%\web.config.bak".
还是不行。这是错误信息:
进程无法访问该文件,因为它正被另一个进程使用 过程。
所以这不是 kudu 问题。我真的不知道为什么我的 web.config 被锁定了。我尝试使用调试控制台 (*.scm.azurewebsites.net/DebugConsole) 重命名 web.config,并且重复了相同的错误消息。
如果我终止 w3wp.exe 进程,则部署成功。
有什么方法可以知道为什么我的 web.config 被锁定了(¡¡有时!!)?
** 更新 2 ** 我认为@beatcracker 是正确的,但我仍在努力解决这个问题。
我已将这两行添加到我的 deploy.cmd
cd %DEPLOYMENT_TARGET%
for /F "tokens=3,6 delims=: " %%I IN ('%DEPLOYMENT_SOURCE%\Handle.exe -accepteula Web.config') DO %DEPLOYMENT_SOURCE%\Handle.exe -accepteula -c %%J -y -p %%I
请注意,我需要在 DO 语句中添加 -accepteula 参数,并且我需要执行“cd %DEPLOYMENT_TARGET%”,因为如果我在 IN 语句中设置它不起作用。
而新的问题是……
错误关闭句柄:A
我一直在谷歌搜索,但没有找到任何关于“A”错误的描述。
有什么想法吗?
【问题讨论】:
-
发生这种情况时要尝试的一件事:转到 Kudu (yoursite.scm.azurewebsites.net),转到 Process Explorer,然后使用 Find Handle 工具查看是否有任何东西可以处理该文件.
-
下次遇到这种情况我会试试的!谢谢。
-
嗨!它又发生了。我已按照您的说明进行操作,并且我的 web.config 由 w3wp.exe 进程处理。据我所知,这是使网站正常运行的过程。我已经终止了该过程,并且部署成功。这是否意味着如果 w3sp.exe 正在运行,我无法部署我的网站?如果有帮助,我已经做了很多截图。谢谢!
-
虽然 w3wp 确实需要读取 web.config,但它不应该保持锁定状态。网站一启动它就会被锁定吗?如果您将其与“入门”ASP.NET 站点的行为进行比较会怎样?您的应用程序(或您使用的某些库)中是否有自定义逻辑打开它并且没有正确关闭它?你在本地机器上看到的一样吗?
-
问题是它有时会发生(可能是 10% 的时间)。我在本地机器上没有问题,并且(如果我没有遗漏任何东西)我的应用程序上没有任何东西正在打开 web.config ......但它应该是这样的,因为任何其他事情都是有意义的......我会尝试使用 de starter ASP.NET 站点。非常感谢您的宝贵时间。我会继续报道。
标签: git azure deployment