蔚蓝“;“KuduSync.NET”;在多个azure网站中使用git部署时出错
我有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\wwwwroot”-n“D:\home\site\deployments\6c8e6d6ba36c35d7adf1c0a2f93f5397df2600d1\manifest”--p“D:\home\site\deployments\52AA055BBB165EE2B07EC780BB11B252ED001A\manifest”-.git;.hg;.deployment;deployment.cmd” 网站部署期间发生错误 我明白它的意思,但对我来说毫无意义。登台网站几乎从未使用过(仅用于测试目的),并且“始终可用”设置被设置为false 有关更多详细信息,一些登台网站会抛出错误,而另一些则不会 我现在要做的是稍等(5分钟,10分钟,15分钟…),重试部署并向比特之神祈祷 有人知道问题出在哪里吗 提前谢谢 编辑 我按照@beatcracker建议的步骤修改了deploy.cmd,并在KuduSync步骤之前添加了两行:蔚蓝“;“KuduSync.NET”;在多个azure网站中使用git部署时出错,git,azure,deployment,Git,Azure,Deployment,我有4个azure网站,每个网站都有自己的“暂存”部署槽。所有这些暂存槽都是使用相同的源代码存储库(git)部署的 这是相同的解决方案,每个azure网站都使用“项目”设置(azure网站-->配置选项卡-->应用程序设置)编译自己的项目 事实上,几乎总是工作得很好,但有时(10%的时间)它会给我带来一个恼人的实现错误: KuduSync.NET从:“D:\local\Temp\a8b0a9fb-c31c-45a1-92d3-55b80315a6dc”到:“D:\home\site\wwwroo
del "%DEPLOYMENT_TARGET%\web.config.bak"
rename "%DEPLOYMENT_TARGET%\web.config" "%DEPLOYMENT_TARGET%\web.config.bak".
它仍然不起作用。这是错误消息:
进程无法访问该文件,因为另一个进程正在使用该文件
过程
所以这不是库杜的问题。我真的不知道为什么我的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\u TARGET%”,因为如果在in语句中设置它,它将不起作用
新的问题是
关闭句柄时出错:A
我一直在谷歌上搜索,没有找到任何关于“A”错误的描述
有什么想法吗?您使用的是最新版本的吗?因为此提交:“”应修复此问题() 更新#1: 我使用的是Azure,所以我想他们使用的是最新版本的 库杜申克 这可能是,也可能不是。因为您不能直接访问KuduSync,所以需要一些变通方法。这里有一个想法:创建自定义部署脚本,在更新到
web.config.bak
之前将其重命名为web.config
(并删除以前的web.config.bak
,如果有的话)
deploy.cmd
):
yourwebsite.scm.azurewebsites.net
工具
下载部署脚本
并获取为您的代码生成的部署脚本Azureweb.config
appcmd回收apppool yourappool
handle.exe
,以便自动部署
相关XKCD:
发生这种情况时,请尝试一件事:转到Kudu(yoursite.scm.azurewebsites.net),转到Process Explorer,并使用“查找句柄”工具查看是否有任何内容具有该文件的句柄。下次发生时,我将尝试它!谢谢,嗨!事情又发生了。我已经按照您的说明进行了操作,我的web.config由w3wp.exe进程处理。据我所知,正是这个过程让网站运转起来。我已终止进程,部署成功。这是否意味着如果w3sp.exe正在运行,我无法部署我的网站?如果有帮助的话,我已经做了很多截图。谢谢虽然w3wp确实需要读取web.config,但不应将其锁定。网站一开始就被锁定了吗?如果与“初学者”ASP.NET站点的行为进行比较会怎么样?您的应用程序(或您使用的某个库)中是否有自定义逻辑打开应用程序而未正确关闭?你在电视上也看到了吗
for /F "tokens=3,6 delims=: " %%I IN ('handle.exe -accepteula %DEPLOYMENT_TARGET%\web.config') DO handle.exe -c %%J -y -p %%I