Fluent Migrator 在 azure/kudu 中等待用户输入

Fluent Migrator waiting for user input in azure/kudu

我正在尝试使用 Fluent Migrator 在 azure/kudu 内部署数据库。我正在从部署命令中调用 Migrate.exe。当 运行ning 在 azure/kudu 中迁移 运行 成功,然后等待用户输入。显然没有用户输入,部署会抛出超时错误。确切的错误是:

Command 'starter.cmd deploy.cmd' was aborted due to no output nor CPU activity for 61 seconds.

当我 运行 同样 Migrate.exe 在本地它 运行s 然后 returns 到命令提示符而不等待用户输入。

知道为什么在 Azure/kudu 内部脚本会等待用户输入而在本地却不会吗?

所有 Azure Web 应用程序(以及移动 App/Services、WebJobs 和 Functions)运行 在称为沙箱的安全环境中。每个应用程序 运行 都在自己的沙箱中,将其执行与同一台机器上的其他实例隔离开来,并提供额外的安全性和隐私性,否则将无法获得。 沙箱本身 运行 在由 Azure Web App 管理服务控制的作业中(相当于 Windows 中的 WAS 服务)。沙箱中的进程可以创建自己的嵌套作业供子进程占用。您可以在此处查看沙盒限制:一般沙盒限制:https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#general-sandbox-restrictions

Azure 负载均衡器的默认空闲超时设置为四分钟。这通常是 Web 请求的合理响应时间限制。如果您的 Web 应用需要后台处理,我们建议使用 Azure WebJobs。 Azure Web 应用程序可以调用 WebJobs 并在后台处理完成时收到通知。您可以从多种使用 WebJobs 的方法中进行选择,包括队列和触发器。 WebJobs 专为后台处理而设计。您可以在 WebJob 中进行任意多的后台处理。

原来是我调用的powershell脚本有误

以前旧的(不工作的)部署命令是这样调用的:call :ExecuteCmd PowerShell -Version 2.0 ".\Deploy.ps1" 我将其更改为: call :ExecuteCmd PowerShell ".\Deploy.ps1"

我刚刚删除了硬编码的“-Version 2.0”,一切都运行成功了。

因此,如果您使用硬编码的 2.0 版调用 powershell 脚本并且遇到一些奇怪的错误,您应该删除该行。