Dot Net Core Mon go Проверка работоспособности ОШИБКА: Новый MongoClient не может быть добавлен в словарь - PullRequest
0 голосов
/ 11 марта 2020

У меня есть приложение Web API, написанное на Dot Net Core 3.1 с проверкой работоспособности MongoDB. Я использую AspNetCore.HealthChecks.MongoDb (2.2.2) nuget для проверки состояния Mon go. Мы заметили, что наши производственные журналы переполнены ошибками: Новый MongoClient не может быть добавлен в словарь . Не могли бы вы помочь?

Вот код, написанный при запуске для проверки работоспособности MongoDB,

public void ConfigureContainer(ServiceRegistry services)
{
   services.AddHealthChecks()
                .AddMongoDb(config.ConnectionStrings.MongoDbContext.ThrowIfNull("MongoDbContext"),
                            config.AppSettings.MongoDbName.ThrowIfNull("MongoDbName"), null, null, null);
}


public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
     app.UseHealthChecks("/api/v1.0/health", new HealthCheckOptions()
     {
        ResponseWriter = WriteResponse
     });
}

private static Task WriteResponse(HttpContext httpContext, HealthReport result)
{
       httpContext.Response.ContentType = "application/json";
       if (result.Status != HealthStatus.Healthy)
       {
                IReadOnlyDictionary<string, HealthReportEntry> healthResult = result.Entries;
                if (healthResult != null)
                {
                    string json = new JObject(healthResult.Select(pair =>
                            new JProperty(pair.Key, new JObject(
                                new JProperty("Status", pair.Value.Status.ToString()),
                                new JProperty("Description", pair.Value.Description?.ToString(CultureInfo.InvariantCulture)),
                                new JProperty("Exception", pair.Value.Exception?.ToString()
                                ))))).ToString(Formatting.Indented);
                    Log.Error("Error: {json}", json);
                    return httpContext.Response.WriteAsync($"{result.Status.ToString()} {Environment.NewLine} {json}");
                }
       }
       return httpContext.Response.WriteAsync(result.Status.ToString());
}
...