ASP.NET 核心 MVC 健康检查失败

ASP.NET Core MVC Health Check failing

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

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

Appcloud 似乎无法检查我的应用程序的运行状况。我是否需要安装 Nuget-Package 或其他东西来启动和 运行ning?

感谢您的努力

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

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

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

的示例

正如 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();