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