首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >健康检查失败- TLS上的HTTP/2不是在HTTP/2唯一的端点上协商的

健康检查失败- TLS上的HTTP/2不是在HTTP/2唯一的端点上协商的
EN

Stack Overflow用户
提问于 2022-06-15 07:08:57
回答 1查看 719关注 0票数 0

我只为我的API启用了HTTP2 2。但是,在尝试使用健康检查时,我会得到以下错误

TLS上的HTTP/2不是在HTTP/2唯一的端点上协商的。

安装程序如下所示

红隼:

代码语言:javascript
复制
"Kestrel": {
"EndpointDefaults": {
  "Protocols": "Http2",
  "Http": {
    "Url": "http://localhost:5020"
  }
}

},

健康检查:

代码语言:javascript
复制
public static IServiceCollection AddCustomHealthCheck(this IServiceCollection services)
{
    var sqlOptions = services.GetOptions<SqlOptions>("ConnectionStrings");
    var rabbitMqOptions = services.GetOptions<RabbitMqOptions>("RabbitMq");

    services.AddHealthChecks()
        .AddSqlServer(sqlOptions.DefaultConnection)
        .AddRabbitMQ(rabbitConnectionString:
            $"amqp://{rabbitMqOptions.UserName}:{rabbitMqOptions.Password}@{rabbitMqOptions.HostName}");

    services.AddHealthChecksUI(setup =>
    {
        setup.SetEvaluationTimeInSeconds(60); // time in seconds between check
        setup.AddHealthCheckEndpoint("Basic Health Check", "/healthz");
    }).AddInMemoryStorage();

    return services;
}

public static WebApplication UseCustomHealthCheck(this WebApplication app)
{
    app.UseHealthChecks("/healthz",
            new HealthCheckOptions
            {
                Predicate = _ => true,
                ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse,
                ResultStatusCodes =
                {
                    [HealthStatus.Healthy] = StatusCodes.Status200OK,
                    [HealthStatus.Degraded] = StatusCodes.Status500InternalServerError,
                    [HealthStatus.Unhealthy] = StatusCodes.Status503ServiceUnavailable
                }
            })
        .UseHealthChecksUI(options =>
        {
            options.ApiPath = "/healthcheck";
            options.UIPath = "/healthcheck-ui";
        });

    return app;
}

Dotnet 6.

EN

回答 1

Stack Overflow用户

发布于 2022-06-16 08:43:39

我通过告诉健康检查客户端具体使用HTTP2.0版本和下面的代码来解决这个问题。

代码语言:javascript
复制
        services.AddHealthChecksUI(setup =>
        {
            setup.ConfigureApiEndpointHttpclient((sp, client) =>
            {
                client.DefaultRequestVersion = new Version(2, 0);
            });
            setup.SetEvaluationTimeInSeconds(60); // time in seconds between check
            setup.AddHealthCheckEndpoint("Basic Health Check", "/healthz");
        })
        .AddInMemoryStorage();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72627193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档