ASP.NET Core MVC运行状况检查失败

时间:2017-01-24 14:56:39

标签: asp.net asp.net-mvc asp.net-core-mvc nuget-package swisscomdev

我尝试在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或其他东西才能启动并运行?

感谢您的努力

2 个答案:

答案 0 :(得分:5)

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

如果您的应用程序没有暴露任何端口(例如,它不是带有API的Web服务等),那么您应该将List<String> years = ["2012", "2013", "2010"...] 属性添加到health-check-type,如上所述{{3} }。

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

答案 1 :(得分:2)

正如gsmachado已经提到的,你必须听一个特定的端口。

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

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

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

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

e.g:

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

var host = new WebHostBuilder()
    .UseKestrel()
    .UseConfiguration(config)
    .UseStartup<Startup>()
    .Build();