Después de actualizar a VS 16.10.0 (y luego 16.10.1) Community Edition, un sitio web de React ya no se ejecuta en Visual Studio/IIS Express. Se acaba de implementar exactamente el mismo código en un servicio de aplicaciones de Azure y funciona correctamente.
La página de inicio está en blanco y se muestra el siguiente error en la consola del depurador de Chrome (versión 91.0.4472.77 (compilación oficial) (64 bits))
"Error al cargar el recurso: net::ERR_HTTP2_PROTOCOL_ERROR"
La solución consiste en:
He probado lo siguiente:
Nota adicional: pude restaurar una máquina virtual con Visual Studio 2019 v16.9.4 en lugar de v16.10.1. Luego, paso a paso, instalé las últimas actualizaciones de Windows y el código base exacto. El sitio se ejecuta correctamente en v16.9.4. Entonces, el problema parece estar en Visual Studio v16.10.0/v16.10.1
Vaya a la comunidad de desarrolladores de VS y vote este problema
https://developercommunity.visualstudio.com/t/Failed-to-load-resource:-net::ERR_HTTP2_/1446262
Tuvimos el mismo problema solo en las máquinas que tenían ese KB5003637 instalado. Lo desinstalamos y todo bien. Decidimos actualizar a .net 5 al final, lo que soluciona el problema, ya que fue bastante sencillo para nuestros proyectos.
Si no puede actualizar, intente deshabilitar HTTP/2
serverOptions.ConfigureEndpointDefaults(lo => lo.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1);El mío se ve así para .net core 3.1
public static IHostBuilder CreateWebHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureKestrel(serverOptions => { serverOptions.Limits.MaxRequestBodySize = int.MaxValue; serverOptions.Limits.MinResponseDataRate = null; serverOptions.ConfigureEndpointDefaults(lo => lo.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1); }) .UseStartup<Startup>(); }); }este problema (en iis express) solo en el sistema operativo que tenía instalado ese KB5003637. si no puede eliminar esta actualización, primero actualice Windows 10 para que dure https://www.microsoft.com/en-ca/software-download/windows10 y luego puede eliminar kb5003637
(no olvide desactivar la actualización automática de Windows)
Recibí este error al crear una nueva actualización de la aplicación blazor vs2019/windows10 a las últimas versiones. Después de ver un proyecto de blazor en funcionamiento anterior, Startup.cs, lo arreglé comentando //app.UseHttpsRedirection(); Creo que esto puede ser un nuevo problema de plantilla de proyecto
Deshabilite el SSL de las propiedades del proyecto, bajará automáticamente a http/1 y luego habilitará el depurador de JavaScript para el navegador.
Espero que esto ayude
Intenté todo, incluso revertir las actualizaciones y una reinstalación completa de Windows. Finalmente, un representante de soporte de Microsoft publicó una solución para esto que implica deshabilitar HTTP2 . Esto parece haber funcionado para mí como una solución temporal. En resumen:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\ParametersEnableHttp2Tls y EnableHttp2Cleartext , a esta clave de registro0El representante señala:
Los valores del registro deshabilitan HTTP/2 en la máquina. Puede eliminar esos valores cuando se publique la corrección de https.sys.
En mi caso, actualizar el proyecto a .Net core 5.0 (como sugirió @SpeedofSpin) no ayudó, tuve el mismo problema.
Deshabilitar SSL (como sugirió @samejeep) para la aplicación fue exigente, porque mis proyectos usan IdentityServer4 y simplemente dejó de autenticarse después de eso, así que no continué ese camino.
Pero como solución, he cambiado todas las solicitudes de css, js y archivos estáticos a través de solicitudes http:// que no son SSL.
Entonces, por ejemplo, en lugar de esto
<link rel="stylesheet" href="~/css/site.css">Que usaría el protocolo de solicitud actual https://, he usado rutas absolutas, por ejemplo:
<link rel="stylesheet" href="http://localhost/css/site.css">Tenga en cuenta que estoy declarando "http" (no "https") explícitamente.
Lo hice para los estilos css y los scripts js y eso fue suficiente para mí. Sin embargo, no tuve que hacerlo para las imágenes.
Para mí, esto es solo una solución sucia (estaré esperando que MS lance un parche), pero al menos me permite seguir haciendo mi trabajo.
Actualizar :
Encontré una mejor manera de deshabilitar HTTP/2 a través del registro en mi host local y eso también resuelve el problema.
Descubrí que deshabilitar SSL (que creo que hace que IIS Express baje a HTTP 1.1) es una solución.
En mi caso, fue ASP.NET Core Identity lo que causó el problema: tenía demasiados roles (reclamos de usuario) que se almacenaron como cookies de sesión en mi navegador y causaron el error "HTTP 400 Bad Request - Request header too long". Esto se mostraba como un error de protocolo HTTP2 en Chrome y un error de certificado SSL en Firefox ya que estaba usando la redirección HTTPS.