在Startup.Configure中添加运行状况检查

时间:2017-06-22 21:01:13

标签: c# asp.net-core

我们希望在我们的.NET Core API中标准化运行状况检查,我们认为一种简单的方法是安装一个NuGet包,其中包含我们可以在启动文件中添加的内容,如此。

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        app.UseHealthCheck(env.EnvironmentName, env.ApplicationName, "/myHealthCheckUrl");

        // And all the rest of the app.UseSomethings.
    }

现在如果有人点击myapp.com/myHealthCheckUrl,他们会收到一条消息,上面写着myAppName is alive in myEnvironmentName.

我甚至不知道用于谷歌的正确术语答案。我们将如何做到这一点? Swashbuckle执行something similar with UseSwaggerUi,但调用app.UseFileServer并提供修改后的HTML页面。这是处理它的方法,还是有更轻量级的选择?同样,我们希望这对每个API的其余部分产生最小影响,因此我们试图避免在应用程序本身中执行控制器操作。

1 个答案:

答案 0 :(得分:1)

正如对该问题的评论所示,我们所寻求的是提供runas /user:domain\username chrome <pathToChrome>。最简单的方法是将这段代码添加到Middleware方法中,这就是我们决定使用的方法。

Configure

由于这个问题没有回答在NuGet包中创建一种方法的问题,这里是你在扩展类中如何做到的。

app.Map("/HealthCheck", a =>
{
    a.Run(async context =>
    {
        await context.Response.WriteAsync($"{env.ApplicationName} is alive in {env.EnvironmentName}");
    });
});

然后用

调用它
public static class ApplicationBuilderExtensions
{
    /// <summary>
    /// Gives a happy little response when someone makes a request to healthCheckUrl
    /// </summary>
    public static IApplicationBuilder UseHealthCheck(this IApplicationBuilder app, string environmentName, string applicationName, string healthCheckUrl)
    {
        app.Map(healthCheckUrl, a =>
        {
            a.Run(async context =>
            {
                await context.Response.WriteAsync($"{applicationName} is alive in environmentName");
            });
        });
        return app;
    }
}

app.UseHealthCheck(env.EnvironmentName, env.ApplicationName, "/myHealthCheckUrl"); 方法中。