我正在尝试使用fluent migrator在azure/kudu内部进行数据库部署。我正在从部署命令调用migrate.exe。在azure/kudu中运行时,迁移将成功运行,然后等待用户输入。显然没有用户输入,部署会抛出超时错误。确切的错误是:
Command 'starter.cmd deploy.cmd' was aborted due to no output nor CPU activity for 61 seconds.
当我在本地运行相同的migrate.exe时,它会运行,然后返回到命令提示符,而不等待用户输入。
你知道为什么在azure/kudu中一个脚本会等待用户输入,而在本地它不会吗?
2条答案
按热度按时间cczfrluj1#
结果是我错误地调用了powershell脚本。
以前,旧的(不工作)部署命令得到如下调用:call:executecmd powershell-version 2.0“..\deploy.ps1”,我将其更改为:call:executecmd powershell“..\deploy.ps1”
我刚刚删除了硬编码“-version 2.0”,一切都成功了。
因此,如果调用硬编码版本为2.0的powershell脚本并出现一些奇怪的错误,则应该删除该行。
lp0sw83n2#
所有azure web应用程序(以及移动应用程序/服务、webjobs和函数)都在称为沙盒的安全环境中运行。每个应用程序都在自己的沙盒中运行,将其执行与同一台机器上的其他示例隔离开来,并提供了额外的安全性和隐私性,否则就不可用了。沙盒本身运行在一个由azureweb应用管理服务(在windows中与was服务在道义上是等价的)控制的作业中。沙盒中的进程可以为子进程创建自己的嵌套作业。您可以在此处查看沙盒限制:常规沙盒限制:https://github.com/projectkudu/kudu/wiki/azure-web-app-sandbox#general-沙盒限制
azure负载平衡器的默认空闲超时设置为4分钟。这通常是web请求的合理响应时间限制。如果您的web应用需要后台处理,我们建议您使用azure webjobs。azure web应用程序可以调用webjobs,并在后台处理完成时收到通知。您可以从多种方法中选择使用webjobs,包括队列和触发器。webjobs是为后台处理而设计的。在webjob中,你可以做任何你想做的后台处理。