es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

“error de protocolo” al ejecutar ASP.NET Core en Cloud Run

Mi aplicación web ASP.NET Core ejecutándose en un contenedor en Cloud Run muestra este error cuando se visita en el navegador.

Error de conexión ascendente o desconexión/reinicialización antes de los encabezados. Razón de reinicio: error de protocolo

Me gustaría utilizar HTTP/2 si es posible.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para usar HTTP/2 con su aplicación web ASP.NET Core en ejecución en un contenedor en Cloud Run, debe asegurarse de que su aplicación esté configurada para usar SSL, ya que HTTP/2 solo funciona sobre HTTPS. También debe configurar Kestrel, el servidor web de ASP.NET Core por defecto, para usar HTTP/2.

    Estos son los pasos que puede seguir para configurar su aplicación para HTTP/2:

    1. Asegúrese de que su aplicación esté configurada para usar SSL: Esto significa configurar un certificado SSL válido, ya sea de una autoridad de certificación confiable o mediante el uso de un certificado autofirmado.
    2. Configure Kestrel para usar HTTP/2: Puede hacer esto agregando el siguiente código al método CreateWebHostBuilder en su archivo Program.cs:

    .UseKestrel(options =>
    {
        // Habilitar soporte para HTTP/2
        options.Listen(IPAddress.Any, 443, listenOptions =>
        {
            listenOptions.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http2;
            listenOptions.UseHttps();
        });
    })
    

    Este código configura Kestrel para escuchar en el puerto 443 (el puerto HTTPS predeterminado) para el tráfico de HTTP/2.

    1. Asegúrese de que su aplicación esté desplegada en Cloud Run con el mapeo de puertos correcto: Al implementar su aplicación en Cloud Run, asegúrese de haber configurado el mapeo de puertos correcto en su Dockerfile o al utilizar la herramienta gcloud CLI. Esto garantizará que el tráfico se enrutará correctamente al servidor Kestrel de su aplicación.

    Una vez completados estos pasos, su aplicación debería ser accesible a través de HTTPS con HTTP/2 habilitado. Si aún recibe el error “upstream connect error or disconnect/reset before headers”, verifique que su certificado SSL sea válido y que su mapeo de puertos sea correcto.

Comments are closed.