martes, 21 de junio de 2011

The section can't be defined in this configuration file (the allowed definition context is 'MachineToApplication')

La verdad que este error si me a quitado el sueño no solo una vez, sino en repetidas ocasiones, la primera vez si que dure mucho tiempo para buscarle una solucion pero no fue de mi agrado, las otras ocasiones descubri otras variantes para solucionar el error, hoy me volvi a tocar con lo mismo y me anime a escribir un poco de aquello.

Primero entendamos y conoscamos el error a fondo y despues hablemos de soluciones posibles:

Cuando tenemos una aplicacion que deseamos usar el membership, por lo tanto roles tambien, al probarla en nuestro ambiente de Mono, es posible que obtengamos este error:

The section can't be defined in this configuration file (the allowed definition context is 'MachineToApplication')

Verlo a primer encontronazo, nos quedamos perplejos, un error muy extraño que no nos dice mucho, solo que la definicion del roleManager no se puede declarar en el webconfig, sino en otro contexto, pero sucede que nuestra aplicacion trabaja bien en nuestro ambiente de windows, en el caso de que sea que estemos portandolo desde alli. Pues googleando un poco no encontramos absolutamente nada que nos ayude, un error poco discutido, incluso solo vi algunos que suguieren que actualizemos a una version mas nueva de mono si hay alguna... esta solucion me parece a la que dan algunos soportes tecnicos a los usuarios cuando tienen cualquier tipo de problema que sin saber mucho la situacion solo dicen "resetea el computador, si persiste llamame, adios". Obviamente esta no es la solucion, ya que he visto el mismo error en versiones diferentes de mono.

El problema radica en que el mod_mono no esta viendo nuestra aplicacion como una real aplicacion, sino como una carpeta comun. Este error ocurre si no tenemos configurada (o no lo esta correctamente) nuestra aplicacion en el mod_mono.conf o si estamos trabajando con el AutoHosting.

Si configuramos nuestra aplicacion manualmente en el mod_mono.conf no veremos mas este error y todas las aplicaciones que hostiemos la debemos de configurar correctamente alli, aconsejable utilizar esta utilidad que nos genera la configuracion correcta para nuestra aplicacion http://go-mono.com/config-mod-mono/

Otra forma de resolver el error sin enliarnos mucho con la configuracion es copiar nuestra aplicacion en el root de nuestro site, es decir, fuera de cualquier carpeta, con el solo hecho de escribir http://midominio.com esta entre inmediatamente. Esta solucion es viable si no pensamos hostear ninguna otra aplicacion mas, solo una.

Pero que sucede si deseo utilizar el AutoHosting y estoy recibiendo este error?

El autohosting permite que tengamos muchas aplicaciones en un mismo dominio separados por carperas y que estas no sean necesarias ser configuradas en ningun archivo de configuracion, definitivamente el autohosting es la mejor opcion para trabajar, pero este error nos hace la vida imposible ya que si tenemos 10 aplicaciones hosteadas y una sola de estas utilizara el membership y nos arroja este error, pues nuestras otras 9 aplicaciones se bloquean!!

Por que el AutoHosting no reconoce nuestra aplicacion como tal??? pues lo que sucede es que el autohosting para considerar que una carpeta es una aplicacion solo toma en cuenta si existe un archivo "Global.asax" o una carpeta "bin". Asi que si no tenemos ninguno de los dos, pues a crearlo... Pero por su puesto que tengo por lo menos la carpeta "Bin" en mi aplicacion y sigue presentando el error.... dije "Bin" con la B en mayuscula? pues ahi esta el problema, el autohosting es CASE-SENSITIVE, el esta buscando un "bin" no un "Bin".

No hay comentarios: