Cuando creamos una vesión móvil de una aplicación Web suele veir bien dar acceso a ésta desde la misma URL tanto a los clientes Web "normales" como a los usuarios que accedan desde el móvil. Hay quien directamente construye dos URLs diferentes, en plan, www.miapp.com y movil.miapp.com, pero es un poco excesivo ¿verdad?

La mejor manera de hacerlo es meter cada aplicación en su propia carpeta e incluir un código similar a esto en la página por defecto del dominio por el que se accede a ambas aplicaciones:

<script runat="server" language="c#">
    public void Page_Load(Object sender, EventArgs e)
    {
        if (Request.Browser["IsMobileDevice"] == "true" )
        {
            Response.Redirect("AppMovil/");
        }
        else
        {
            Response.Redirect("AppWeb/");
        }
    }
</script>

Pero OJO, esto no es todo aunque pueda parecerlo.

Si lo dejamos así simplemente veremos que funcionará en muchos casos pero en muchos otros no será así. Esto se debe a que en muchos dispositivos móviles no están soportadas las URLs relativas, es decir, que siempre hay que facilitarle la URL completa para que puedan encontrar los recursos. Podemos hacerlo metiéndola siempre en el código pero es un poco suplicio. Los diseñadores de ASP.NET ya pensaron en eso e incluyeron un atributo dentro de Web.Config que nos permite olvidarnos del asunto. Se trata de useFullyQualifiedRedirectUrl. Basta con asignarlo para que se usen de manera automática URLs completas y el código anterior funcione siempre bien:

<configuration>
    <system.web>
        <httpRuntime useFullyQualifiedRedirectUrl="true" />
    </system.web>
</configuration>

Es la típica cosa que la probamos y parece estar bien y,de repente, un mes más tarde, nos empiezan a bombardear los usuarios con llamadas, así que hay que tenerla miy en cuenta.

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor

Escrito por un humano, no por una IA