Troubleshooting ASP.NET MVC on IIS 7

Some days ago we had to work hard on this topic to make an ASP.NET MVC application run on IIS7. It took us almost 2 hours, and after completing the task I decided it deserves a post.

I will start by listing the common setup steps and then I will share our particular case.

Solving common issues

First of all you need to have IIS installed and ASP.NET registered, this seems obvious but it must be mentioned. If you installed .NET framework after installing IIS then .NET Framework installation takes care of registering ASP.NET in IIS. But if you installed IIS after installing .NET, then you will have to make the registration yourself. To do this open a Command Prompt (running as administrator), go to the .NET framework folder (typically WindowsMicrosoft.NETFrameworkvXXXX) and execute the command aspnet_regiis –i.

image

Once you have IIS with ASP.NET running, you can create the website or virtual directory for your application, point it to your application folder  and if you are lucky your application is now running.

One common issue you can find is that when trying to browse your application you get a blank page, no errors, just a blank page. This usually happens when the IIS HTTP Redirection component is missing. So to fix it, just install this component by browsing Control Panel | Programs | Turn Windows features on or off | Internet Information Services | Word Wide Web Services | Common HTTP features and check HTTP Redirection.

image

Solving our particular case (when you have two different ASP.NET builds installed)

In our case, we had the problem that the machine had installed 2 different builds of ASP.NET v4 (I think these builds corresponded to beta 1 and beta2 versions). After we followed the previous steps, when trying to run the application the app pool try to load the incorrect version (beta 1), it failed and the app pool stopped. We tried  to  re-register ASP.NET, but it didn’t work. In the APP Pool configuration we explicitly set the correct version, but at runtime, it tried to load the incorrect one. How did we solved it:

  • Un-register ALL ASP.NET versions (by running aspnet_regiis –ua).
  • Delete Beta 1 folder located under WindowsMicrosoft.NETFramework.
  • Register again the ASP.NET beta 2 version. (by running aspnet_regiis –i)

That was all, hope this help you.

Por qué Linux no es masivo

Se que este post puede resultar polémico, pero a pesar de eso quiero compartir mi visión.Este es un post que tenia pendiente desde hace bastante tiempo. Lamentablemente me encuentro escribiendo este post desde Windows porque luego de actualizar la distribución de Ubuntu (de 9.04 a 9.10)  el modem 3G dejó de funcionar.

Según veo las cosas yo, a pesar de que Ubuntu ha logrado proveer de una experiencia de usuario muy “amistosa” en comparación con las otras distribuciones de Linux, aún se encuentra bastante distante de la expericiencia de usuario provista por Windows y Mac OS.

Creo que el caso del modem 3G es un claro ejemplo: mientras que en Windows el uso del modem es muy directo (simplemente doble click para instalar el marcador, dos clicks mas para activar el modem y marcar,  y listo, ya estamos manejando),  en Linux es necesario ejecutar una serie de pasos desde una consola, con permisos de superusuario (pasos que pueden llegar a incluir la instalación/configuración de un driver).

En gran medida esta situación puede que se deba a que no todos  los fabricantes de hardware proveen drivers para Linux. Por otro lado la filosofía open source creo que también puede resultar un impedimento, ya que no todo el mundo está dispuesto a “publicar” su código fuente. ¿Como influye esto? Ciertas distribuciones no incluyen en el instalador software que no sea Open source, obligando a que el usuario deba tomar a su cargo la “instalación/configuración” de los drivers  que la distribución no incluye.

Por último, pero no por eso menos importante, está el tema de la consola/terminal. Entiendo que a los programadores de linux les encante trabajar en una terminal, pero para la gran mayoria de los usuario les resulta extraño y/o incómodo .

Tengo algunos otros puntos sobre este tema, pero son muy particulares y creo que no aportan a la discusión, pues lo aquí mencionado es de mucha mayor relevancia.

Website Performance Tools

During these days we (project A2 team) have been working on this topic. We are working on training material about website performance, so we had to review some tools to measure performance.
Below is a list of tools we have reviewed during the last week.

  • FireBug: is a very popular FireFox add-on for allowing to edit, debug, and monitor CSS, HTML, and JavaScript, but it also provides lower level information such as http headers and others.
  • YSlow: is a FireFox/FireBug add-on developed by Yahoo! It analyzes and qualifies web pages from A to F suggesting ways to improve their performance based on a set of rules for high performance web pages. The reports it generates are very nice.
  • Page Speed: is a FireFox/FireBug add-on developed by Google. It performs several tests on web pages that are based on a set of best practices known to enhance web page performance. A score is provided for each page as well as helpful suggestions on how to improve its performance.
  • MSFast: is a browser plugin that help developers to improve their code performance by capturing and measuring possible bottlenecks on their web pages. It has been developed by MySpace.com and currently supports Internet Explorer.
  • dynaTrace: It integrates with Internet Explorer and allows you to diagnose and prevent AJAX performance issues.
  • Visual Round Trip Analyzer: is a standalone application that examines the communications protocol, identifying the causes of excessive round-trips, and recommending solutions. It is browser-independent. You open the tool and it starts recording what happen at network level. Then you browse your website and finally stop the recording. The tool helps you analyze what have happened.

There are some more tools we have reviewed but these are in my opinion the most interesting. You might be wondering why I didn’t mentioned Fiddler. The reason is that Fiddler does not provide any suggestions, it’s a passive tool: just captures the network traffic because its focus is not performance analysis.

On future posts I would like to drill down on each of these tools and I will also provide information about JavaScript profiling and server-side analysis.

Modem MD300 en Ubuntu

Estoy escribiendo este post conectado desde ubuntu con un modem Sony Ericsson MD300 con conexión 3G de Claro Argentina.

Como ya he mencionado previamente, la configuración de este modem lo más costoso (en cuanto a tiempo invertido) que tuvo la configuración de ubuntu.

A diferencia de lo que ocurre en Windows, siguiendo el procedimiento indicado, no hace falta activar el dispositivo y luego conectarse, basta con conectar el modem y automáticamente se dispara la activicación y conexión sin ninguna intervención del usuario.

No voy a entrar en los detalles de la configuración, pues hay gente que ya lo ha hecho con suficiente detalle, asi que simplemente les voy a dejar el link al artículo que según mi experiencia es el más completo: http://laudecioliveira.org/blog/?p=70. Está en portugués pero con un poco de voluntad, puden seguirse los pasos perfectamente.

Espero les resulte útil.

Ubuntu después de dos semanas

Bien, sinceramente bien. Ya venia acostumbrado a las herramientas open source como Open Office, Firefox y Thunderbird con lo cual eso no fue novedad. En cuanto a mi trabajo cotidiano sobre tecnología Microsoft, virtualización, instalé Virtual Box y listo. Realmente es Virtual Box ha superado por mucho mis expectativas, pude levantar una una máquina virtual en formato Virtual PC (.vhd) en una partición NTFS. Al mismo tiempo resulta que la misma máquina virtual (mismo archivo físico) corre mejor en Virtual Box en Linux que en Virtual PC en Windows. Para poner una última frutilla al postre la maquina virtual tiene como sistema operativo Windows7 y tiene corriendo Visual Studio 2010 y Office 2010.

Hola 2010, hola Linux

Un nuevo año comienza y por quinta vez voy a intentar usar linux como sistema operativo de cabecera (ya en algún otro momento contaré sobre mis 4 experiencias previas). En realidad esta experiencia comenzó durante diciembre de 2009, cuando instalé en mi Dell XPS Studio un Ubuntu 9.04 particularmente tuneado que descargué del sitio de Dell. Primero corrí el Live CD para ver si los principales dispositivos era reconocidos y por suerte todo levanto perfectamente a excepción del audio. Después de algunas pruebas básicas decidí instalarlo en modo dual boot con el Windows7 que ya tenía instalado. Una vez instalado, al intentar reproducir audio por primera vez el propio Ubuntu se encargó de encontrar un driver apropiado y previa validación conmigo se encargó de instalarlo y chan! tuve sonido. A continuación me encargué de instalar algunos herramientas de desarrollo como Java, Eclipse, MySql, Pharo y Ruby. Luego instalé algunos programa de uso general como aMsn, VLC, VirtualBox y Thunderbird. Hasta aquí todo fue feliz, realmente el comando apt-get provee una experiencia de usuario muy cómoda. La cosa dejo de ser tan feliz cuando intenté configurar el modem USB de banda ancha móvil. Tuve que googlear un rato y luego de probar varias instrucciones de distintas fuentes, logré que Ubuntu lo reconociera, pero para entonces ya había invertido más de 5 horas. En un futuro post voy a detallar el procedimiento que seguí para hacer funcionar el modem. Por ahora, solo me resta decir que en este momento estoy escribiendo este post felizmente desde Ubuntu.