gpt4 book ai didi

.net - Azure 启动任务挂起

转载 作者:行者123 更新时间:2023-12-01 05:29:20 25 4
gpt4 key购买 nike

我有一个具有 MVC4 角色的 Azure 项目,我在其中添加了 Visual C++ 2012 Runtime Library安装文件,以及静默安装它的脚本。

脚本有效并且库被安装,唯一的问题是任务永远不会完成并且安装过程永远不会退出,这会阻止角色启动: Role Instance

我使用远程桌面连接到服务器,通过查看任务管理器,我可以看到进程 vcredist_x64.exe:(实际上有 2 个,但我认为这很正常)

Windows Server Task Manager

当我右键单击并终止进程时,部署成功完成并启动角色。

当我的启动任务在 ServiceDefinition.csdef 中设置为 simple 时,这是一个问题,因为这会使服务器等到任务完成后再启动角色。所以我所做的是将任务设置为后台,这样启动脚本就不会再阻止角色启动,但即使这样,进程仍然在后台运行,必须被杀死手动。

此脚本应该可以工作,并且之前可以在 2010 VC++ 库中使用(虽然没有 EXIT,但应该存在,以避免在脚本返回错误代码时阻止角色):

vcredist_x64.exe /quiet /norestart
EXIT /B 0

不起作用,所以我想在安装后手动终止该进程:

vcredist_x64.exe /quiet /norestart
TASKKILL /F /T /IM vcredist_x64.exe
EXIT /B 0

不起作用,进程仍然存在。如果我自己在服务器上或本地手动运行该脚本,该脚本实际上可以工作,但是当 Azure 在部署期间尝试执行该脚本时,它会挂起。

我的启动任务在 ServiceDefinition.csdef 中定义如下:

<Startup>
<Task commandLine="InstallVcRedist.cmd" executionContext="elevated" taskType="background" />
</Startup>

C:\Resources\temp\{RoleId.RoleName}\RoleTemp 中的日志表明一切正常。

我可以通过将启动任务设置为后台而不是简单的方式来避免角色被阻止,但这并不能真正解决问题。谢谢。

最佳答案

感谢this blog post,我明白了为什么会发生这种情况。作者:史蒂夫·马克思。

此问题仅出现在 Windows Server 2008 SP2 中,因此我不得不将主机更改为 Windows Server 2008 R2
这可以通过将所有 ServiceConfiguration 文件中的 osFamily="1" 更改为 osFamily="2" 来完成,也可以更改它从 Azure 门户,单击该服务,然后单击顶部的“配置操作系统”。

关于.net - Azure 启动任务挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12215672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com