committed by
GitHub
4 changed files with 70 additions and 4 deletions
@ -0,0 +1,40 @@ |
|||
using Microsoft.AspNetCore.Http; |
|||
using Microsoft.AspNetCore.Routing; |
|||
using Microsoft.Extensions.Diagnostics.HealthChecks; |
|||
using System.Net.Http; |
|||
using System.Threading; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Microsoft.eShopWeb.Web.HealthChecks |
|||
{ |
|||
public class ApiHealthCheck : IHealthCheck |
|||
{ |
|||
private readonly IHttpContextAccessor _httpContextAccessor; |
|||
private readonly LinkGenerator _linkGenerator; |
|||
|
|||
public ApiHealthCheck(IHttpContextAccessor httpContextAccessor, LinkGenerator linkGenerator) |
|||
{ |
|||
_httpContextAccessor = httpContextAccessor; |
|||
_linkGenerator = linkGenerator; |
|||
} |
|||
|
|||
public async Task<HealthCheckResult> CheckHealthAsync( |
|||
HealthCheckContext context, |
|||
CancellationToken cancellationToken = default(CancellationToken)) |
|||
{ |
|||
var request = _httpContextAccessor.HttpContext.Request; |
|||
|
|||
string apiLink = _linkGenerator.GetPathByAction("List", "Catalog"); |
|||
string myUrl = request.Scheme + "://" + request.Host.ToString() + apiLink; |
|||
var client = new HttpClient(); |
|||
var response = await client.GetAsync(myUrl); |
|||
var pageContents = await response.Content.ReadAsStringAsync(); |
|||
if (pageContents.Contains(".NET Bot Black Sweatshirt")) |
|||
{ |
|||
return HealthCheckResult.Healthy("The check indicates a healthy result."); |
|||
} |
|||
|
|||
return HealthCheckResult.Unhealthy("The check indicates an unhealthy result."); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue