2

我尝试在 Swisscom Appcloud 上运行 ASP.NET Core MVC Web 应用程序。但是当我启动应用程序时,我在控制台中收到以下错误消息:

2017-01-24 14:29:53 [CELL/0] ERR Timed out after 1m0s: health check never passed. 

看起来 Appcloud 无法检查我的应用程序的运行状况。我是否需要安装 Nuget-Package 或其他东西才能启动并运行它?

谢谢你的努力

4

2 回答 2

5

默认情况下,Cloud Foundry 通过尝试连接到应用程序公开的端口来进行健康检查。

如果您的应用程序没有公开任何端口(例如,它不是具有 API 的 Web 服务等),那么您应该将health-check-type属性添加到,如此none所述。

如果在那之后您仍然遇到错误,那么我建议您找到您的应用程序正在侦听给定端口的位置。在 Cloud Foundry 中,您必须监听$PORT,这是一个环境变量。你可以在这里查看一个例子。

于 2017-01-24T15:46:39.087 回答
2

正如 gsmachado 已经提到的,您必须侦听特定端口。

.NET Core buildpack 会自动配置应用程序 Web 服务器,因此您不必自己处理。但是您必须以允许 buildpack 通过命令行将此信息传递到您的应用程序的方式来准备您的应用程序。

buildpack 将使用以下命令启动您的应用程序:

$ dotnet run --server.urls http://0.0.0.0:${PORT}

因此,您必须将命令行添加为配置提供程序,然后添加 UseConfiguration 扩展以将配置传递给 WebHostBuilder

例如:

var config = new ConfigurationBuilder()
.AddCommandLine(args)
.Build();

var host = new WebHostBuilder()
    .UseKestrel()
    .UseConfiguration(config)
    .UseStartup<Startup>()
    .Build();
于 2017-01-25T18:46:38.757 回答