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étodo ConfigureServices:

    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