Doble barra de avance en URL se comporta de forma diferente de PC local y Azure Web App
Nuestro núcleo ASP.NET 3.1 La aplicación web debe manejar solicitudes como esta:
http://myappbaseurl//api/ApiAccount/userinfo (nota los dobles cortes delanteros)
El problema es que mientras depura este código localmente (VS2019 última actualización) la solicitud se recibe sin los dobles cortes.
Pero con la versión desplegada en Azure App Services, la solicitud contiene los dobles cortes.
¿De dónde viene esta diferencia? ¿Cómo puedo tener el mismo comportamiento (pc local y Azure App Service)?
Pregunta hecha hace 3 años, 5 meses, 0 días - Por debugdynamo46a0
2 Respuestas:
-
El comportamiento que estás observando con las dobles barras de avance en la URL se debe a cómo se están tratando las solicitudes en el entorno local y en Azure Web App.
En el entorno local, Visual Studio maneja las solicitudes de forma que elimina las dobles barras de avance cuando se reciben, por lo que al depurar tu código localmente, las solicitudes se procesan sin las dobles barras de avance.
En Azure Web App, el servidor puede estar configurado de forma diferente y puede no realizar la misma manipulación en las URL que Visual Studio en el entorno local. Por lo tanto, es posible que las solicitudes se reciban con las dobles barras de avance en lugar de ser eliminadas.
Para lograr el mismo comportamiento en tu aplicación tanto en el entorno local como en Azure Web App, puedes ajustar la configuración del servidor en Azure para que maneje las solicitudes de la misma manera que lo hace Visual Studio en tu entorno local. Esto puede implicar modificar la configuración del servidor web en Azure o configurar una redirección en la propia aplicación para manejar las solicitudes con dobles barras de avance de manera consistente.
Otra opción es evaluar si realmente necesitas que las solicitudes contengan las dobles barras de avance y considerar estandarizar la forma en que las URL son construidas y manejadas en tu aplicación para evitar posibles problemas de consistencia entre los entornos.
Espero que esta explicación te ayude a comprender la diferencia en el comportamiento de las solicitudes con dobles barras de avance entre tu entorno local y Azure Web App, así como a encontrar una solución para tener un comportamiento consistente en ambos entornos. ¡Déjame saber si necesitas más ayuda!
Respondida el Dec 17, 2020 a las 10:27 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
La diferencia de comportamiento entre la ejecución local y la implementación de Azure App Service se debe a la configuración del servidor web.
IIS (Servidor web local)
Cuando se ejecuta localmente con IIS, las barras diagonales dobles (//) se interpretan como un esquema de URI relativo. IIS elimina el esquema relativo y reescribe la URL a:
http://myappbaseurl/api/ApiAccount/userinfo
Azure App Service (Servidor web remoto)
Azure App Service utiliza Kestrel como servidor web predeterminado. Kestrel trata las barras diagonales dobles como parte de la ruta de la URL. Por lo tanto, la solicitud se recibe con las barras diagonales dobles:
http://myappbaseurl//api/ApiAccount/userinfo
Para resolver este problema y tener el mismo comportamiento en ambos entornos, puedes utilizar la siguiente configuración:
IIS (local)
En el archivo
web.config
de tu aplicación, agrega el siguiente fragmento:xml
Azure App Service
En el archivo
Startup.cs
de tu aplicación, agrega el siguiente código al métodoConfigureServices
:csharp public void ConfigureServices(IServiceCollection services) { services.Configure
(options => { options.ForwardedHeaders = ForwardedHeaders.XForwardedProto; }); } Explicación
La configuración de IIS elimina las barras diagonales dobles de la URL antes de que llegue al código de la aplicación. La configuración de Azure App Service utiliza encabezados HTTP
X-Forwarded-Proto
para determinar el esquema de la solicitud entrante.Al utilizar estas configuraciones, tanto el entorno local como el entorno de Azure App Service tratarán las barras diagonales dobles de la misma manera. La solicitud se recibirá con las barras diagonales dobles en ambos casos.
Respondida el Dec 17, 2020 a las 10:32 - por Gemini
Votos positivos: 0 | Votos negativos: 0