Estoy recibiendo un error al acceder a las llamadas a la API cuando se despliega en una subcarpeta.
He desarrollado una aplicación web utilizando ABP.IO versión 5.0 (también mismo problema con la versión 4.4.3) y .NET Core Razor pages. En el entorno de desarrollo, todo funciona bien. Si despliego la aplicación en IIS como un sitio de nivel raíz (accesible a través de la URL https://{mi sitio}), todo funciona bien. Pero si lo despliego como una aplicación dentro de un sitio de nivel raíz (accesible a través de la URL https://{sitio padre}/{mi sitio}), puedo acceder a la página de inicio de sesión y llegar al Identity Server, pero todas las llamadas subsecuentes hacia la API fallan. La URL de las llamadas a la API no incluyen la porción {mi sitio} y obtengo un error 404. Las llamadas a la API aparecen como https://{sitio padre}/api/{controlador}/{método} en lugar de https://{sitio padre}/{mi sitio}/api/{controlador}/{método}.
Encontré un ajuste en el archivo appsettings.json (AppSelfURL) que pensé que podría resolver el problema, pero no hizo nada.
¿Existe algún ajuste que obligue a la aplicación a conservar la URL base completa al realizar las llamadas a la API?
davy.ai
Problema de implementación de la aplicación web ABP.IO con enrutamiento de URL
Si ha desarrollado una aplicación web utilizando ABP.IO versión 5.0 o 4.4.3 en páginas Razor de .NET Core, es posible que se encuentre con un problema de enrutamiento de URL al implementar la aplicación en IIS bajo un sitio de nivel raíz.
El problema es que todas las llamadas subsiguientes a la API fallan porque la URL omite la porción
{mi sitio}
, lo que resulta en un error 404. Las llamadas a la API se ven así:https://{sitio padre}/api/{controlador}/{método}
en lugar dehttps://{sitio padre}/{mi sitio}/api/{controlador}/{método}
.Una posible solución es revisar el archivo
appsettings.json
en busca de la configuraciónAppSelfURL
, que le permite especificar la URL base de la aplicación. Sin embargo, cambiar esta configuración puede no resolver el problema.Una solución alternativa es agregar una configuración para forzar que la aplicación mantenga la URL base completa al realizar llamadas a la API. Esto se puede hacer modificando el archivo
Startup.cs
y agregando el siguiente código al métodoConfigureServices
:Este código configura el middleware para usar encabezados reenviados y determinar la URL original de la solicitud. Borra las redes y proxies conocidos para evitar el reenvío desde fuentes no confiables.
Después de realizar este cambio, debería poder implementar la aplicación como una aplicación bajo un sitio de nivel raíz y mantener la URL base completa al realizar llamadas a la API.