我们希望在我们的.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的其余部分产生最小影响,因此我们试图避免在应用程序本身中执行控制器操作。
答案 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");
方法中。