¿Por qué no carga .NET 6 index.html a menos que agregue /index.html a la URL?
Estoy experimentando con la web api en .NET 6. Todo funciona como se esperaba. Sin embargo, estoy intentando cargar una página de destino simple de HTML/CSS en wwwroot.
Quiero agregar que nunca enfrenté este problema con .NET 3.0 o .NET 5 que tenían una configuración similar.
Tengo mi Program.cs
app.UseSwagger();
app.UseSwaggerUI();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseAuthorization();
app.MapControllers();
app.Run();
Ahora, si visitara manualmente localhost/index.html, obtendría la página de destino, tanto localmente como cuando se implementa en una aplicación web de Azure.
Sin embargo, si llego al localhost (o la aplicación web implementada), index.html no se cargará como lo hace habitualmente en las versiones anteriores de .NET.
¿Me estoy perdiendo algo o es esto como un error?
El proyecto completo está disponible aquí: https://github.com/Jay-study-nildana/CSharpForStudents/tree/main/WebApiDotNet6/DotNet6APIEFCoreSQLite
Nota: he visto otra pregunta similar. Creo que no es lo mismo.
https://stackoverflow.com/questions/37783352/mvc-6-net-core-rc2-rewrite-to-index-html-on-non-api-urls
davy.ai
Carga de una página de inicio HTML/CSS en una API web .NET 6
Para cargar una página de inicio HTML/CSS simple en wwwroot en una API web .NET 6, debes utilizar el middleware
app.UseFileServer()
en lugar deapp.UseStaticFiles()
.Reemplaza
app.UseStaticFiles()
conapp.UseFileServer()
en tu archivoProgram.cs
:Esto debería permitirte cargar la página de inicio cuando visitas localhost o la aplicación web implementada.
Ten en cuenta que
app.UseFileServer()
incluye la funcionalidad deapp.UseStaticFiles()
, por lo que no es necesario llamar a ambas funciones de middleware.Si esta solución no funciona, puede ser un error. Puedes intentar actualizar a la última versión de .NET 6 o enviar un informe de error a Microsoft.