2017-06-22 4 views
1

.NET Core API全体でヘルスチェックを標準化したい場合、スタートアップファイルに追加できるようなNuGetパッケージをインストールするのが簡単な方法と考えました。Startup.Configureでヘルスチェックを追加する

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に当たった場合、今、彼らは私も答えをGoogleに使用する権利用語を知らないmyAppName is alive in myEnvironmentName.

のようなものを言ってメッセージを取り戻すだろう。私たちはこれをどうやってやりますか?スワッシュバックルはsomething similar with UseSwaggerUiですが、app.UseFileServerが呼び出され、変更されたHTMLページが配信されます。これはそれを処理する方法でしょうか、あるいはより軽量なオプションがありますか?ここでも、これは各APIの残りの部分に最小限の影響を与えたいので、アプリケーション自体でコントローラのアクションを回避しようとしています。

+0

私はこのページで定義されているミドルウェアのいくつかの種類が欲しいのですか? https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware – Micteu

+1

[Microsoft.Extensions.HealthChecks](https://github.com/dotnet-architecture/eShopOnContainers/tree/master/)を調べてください。 src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks)あなたが必要以上のものを見つけた場合は、コードをチュートリアルとして使用して、独自の単純なミドルウェアを実装できます。 – Set

+1

簡単な[健康チェックミドルウェア](https://github.com/schwamster/health-check-ミドルウェア)パッケージから始めることができます。 –

答えて

1

質問のコメントに示されているように、私たちが探していたのはMiddlewareでした。これを行う最も簡単な方法は、このコードをConfigureメソッドに追加することです。これが私たちが決定したものです。

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

ことは、特にNuGetパッケージでこれを行う方法を作成するための質問に答えていないので、ここであなたが拡張クラスでそれを行うだろう方法です。

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; 
    } 
} 

そしてStartup.Configure方法で

app.UseHealthCheck(env.EnvironmentName, env.ApplicationName, "/myHealthCheckUrl"); 

でそれを呼び出します。

関連する問題