domingo, 30 de agosto de 2015

Etiquetado como:

WPF Web browser no muestra mi web y otras si

C# y Programación
Artículo para: Programadores de C# de cualquier nivel


Resultado de imagen de wpf logoLa semana pasada me sucedió que, después de haber desistido de solucionar el problema, me encontré con una posibilidad remota de arreglarlo. Concretamente lo que me pasaba es que hice una aplicación en WPF que automatizaba un proceso en la web de mi empresa y debía mostrar en el navegador los resultados; lo cual no hacía, me mostraba una página en blanco solo en mi web (si iba a Google o a otros sitios funcionaba sin problemas).

Lo primero que hice para esquivar este problema fue utilizar Awesomium, el cual funciona muy bien pero claro: ¿qué web está creada para Chromium? Supongo que habrá quien se tome la molestia de adaptar su web a este fantástico navegador, pero no es mi caso; es por ello por lo que la web se veía de pena y el "workaround" que me había inventado no me acababa de convencer. Si bien es cierto que no soy usuario de Internet Explorer (me encanta Chrome), para las aplicaciones en WPF que requieren de un navegador mi opción es clara: el control WebBrowser. Pero claro, siempre que éste funcione.

Lo primero es resolver la pregunta del millón: ¿Por qué me muestra la página en blanco? Porque estás usando una versión antigua de Internet Explorer (posiblemente la más antigua que tenga instalado tu PC, aunque tú no tengas acceso a ella, como por ejemplo el 8 o el 9). Aunque os parezca una chorrada, a mi me ha costado mucho dar con el asunto.

Y ahora viene la solución al problema:

  1. Abrimos el editor de registro de Windows pulsando las teclas "Windows" + R, nos saldrá la ventana de ejecución:


  2. Escribimos regedit.exe y le damos los permisos de administrador que nos solicita. Si no somos administradores de nuestra máquina no podremos arreglar este problema. Ejecutamos.
  3. Si tenemos una máquina normal de 64 o 32 bits buscaremos la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
  4. Si nuestra máquina emula 64 bits sobre una de 32 buscaremos la clave HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
  5. Una vez localizada añadiremos un nuevo valor DWORD de 32 bits con el nombre completo de nuestra aplicación como clave (incluyendo el .exe al final) y como valor uno de los de la tabla que detallo a continuación.

Valor
Sirve para…
11001 (0x2EDF) 
Intenet Explorer 11, incluso con la directiva ¡DOCTYPE
11000 (0x2AF8) 

Intenet Explorer 11, las que tengan la directiva ¡DOCTYPE se mostrarán en modo IE9
10001 (0x2AF7)

Internet Explorer 10, incluso con la directiva ¡DOCTYPE
10000 (0x2710) 
Intenet Explorer 10, las que tengan la directiva ¡DOCTYPE se mostrarán en modo IE9
9999 (0x270F) 
Internet Explorer 9, incluso con la directiva ¡DOCTYPE
9000 (0x2328) 
Internet Explorer 9, incluso con la directiva ¡DOCTYPE (este caso es idéntico al anterior). A los de Microsoft les ha patinado, me temo…
8888 (0x22B8) 
Intenet Explorer 8, incluso con la directiva ¡DOCTYPE
8000 (0x1F40) 
Internet Explorer 8, incluso con la directiva ¡DOCTYPE (este caso es idéntico al anterior). A los de Microsoft les ha patinado de nuevo, me temo otra vez…
7000 (0x1B58) 
Internet Explorer 7


Una nota más, que además es muy importante. Si estamos depurando con Visual Studio tendremos que añadir la famosa extensión .vshost.exe (en lugar del .exe solo) al nombre de nuestra aplicación para que concretamente en esta nos funcione como es debido.

Con eso creo que he explicado todo. Si tenéis alguna duda, podéis comentar.

Enrique Díaz

Author y editor

0 comentarios:

Publicar un comentario

 

Webs amigas:

  • En tu email...

    Suscríbete aquí a nuestro newsletter y nunca más te perderás nuestras actualizaciones

    Copyright © Los vericuetos .NET 2015
    Distributed By My Blogger Themes | Designed By Templateism