Iván González

Es incorrecto utilizar una sección registrada como allowDefinition='MachineToApplication' mas allá del nivel de aplicación

En Plain Concepts estamos colaborando con Microsoft en el programa Emprendia.  

¿Que qué es Emprendia?

Pues Emprendia nace como una iniciativa de ayuda dirigida a emprendedores que quieren hacer realidad una idea y desarrollar un proyecto empresarial.

Tenéis más información aquí: http://www.microsoft.com/spanish/msdn/enterprising/default.mspx

Recientemente nos llegó una pregunta de unos de los participantes en el programa que se estaban encontrando con el problema que pongo en el título del Post.

Este problema es un viejo conocido. Quede aquí para personas que se encuentre con este problema en el futuro.

Este error ocurre principalmente en 2 escenarios.

1.- Si creamos una nueva aplicación usando Visual Studio .NET 2002 o 2003, automáticamente crea un directorio virtual y lo configura como una aplicación. Sin embargo, si creamos el directorio virtual de forma manual y no está configurado como una aplicación, no seremos capaces de ejecutar la aplicación y obtendremos el error del título.

Para resolverlo, simplemente tenemos que hacer click con el botón derecho en el directorio virtual para ver sus propiedades, y hacer click en "Crear" para crear una nueva aplicación. Automáticamente creará una aplicación usando el nombre del directorio virtual y ya podremos acceder sin problemas.

2.- Cuando tenemos subdirectorio en la aplicación, podemos tener ficheros web.config para cada subdirectorio. Pero..., hay ciertas propiedades que no se pueden establecer en el fichero de configuración de un subdirectorio como por ejemplo la autenticación, la gestión del estado de la sesión (podremos ver que el mensaje de error muestra el número de línea donde declaramos la autenticación o el estado de la sesión en el web.config del subdirectorio). La razón es que estos parámetros de configuración no se pueden sobreescribir a nivel de subdirectorio a menos que el subdirectorio esté configurado también como una aplicación (como comentaba en el punto anterior).

A veces tenemos la tendencia de añadir ficheros web.config en los subdirectorio si queremos proteger el acceso a los ficheros de ese subdirectorio (un caso muy típico, el directorio es "admin" y queremos denegar el acceso a las páginas de administración a usuarios no autorizados).

Esto mismo se puede hacer usando el web.config a nivel de raíz de la aplicación, indicando la localización de aquello que queremos configurar:

<location path="Admin">
  <
system.web>
    <
authorization>
      <
allow roles="administradores" />
      <
deny users="*" />
    </
authorization>
  </
system.web>
</
location>

Si esto mismo lo quisiesemos hacer en el subdirectorio, lo haríamos así:

<configuration>
  <
system.web>
    <
authorization>
      <
allow roles="administradores" />
      <
deny users="*" />
    </
authorization>
  </
system.web>
</
configuration>
Posted: 8/2/2007 19:43 por Iván González | con 17 comment(s)
Archivado en:

Comentarios

Fran Peula Ariza ha opinado:

...a menos que el subdirectorio esté configurado también como una aplicación...

¿Cuando puede ser lógico crear una aplicación web dentro de otra? ¿Y qué beneficios puedes obtener?.

Ya que aclaras problemas, te doy yo más la vara jejejeje ;).

Un abrazo, titán!!

# February 9, 2007 9:52 AM

Augusto Ruiz ha opinado:

Hombre, el hecho de tener una aplicación web dentro de otra te puede permitir (si tienes IIS6) poner la aplicación hija dentro de otro AppPool, con toda la flexibilidad que eso te concede...

Si tienes IIS5, también podrías cambiar el nivel de aislamiento. De esta manera, si tienes una parte de la aplicación especialmente pesada, podrías darle un proceso propio, con su propia gestión de recursos...

¿O me equivoco?

# February 9, 2007 12:03 PM

Iván González ha opinado:

Totalmente correcto Augusto!!!

Por cierto. Un abrazote grande y a ver cuando quedamos y hacemos una cena o algo!!

# February 9, 2007 12:24 PM

Augusto Ruiz ha opinado:

Pues cuando estés por Madrid... Cuando quieras ;)

(avísame con un par de días, q los fines de semana marcho para Valladolid prácticamente todos, ya sabes...)

# February 9, 2007 4:17 PM

Gustavo chabins@yahoo.com ha opinado:

Este problema siguen sin resolverlo. Yo pase mucho antes de encontrar una solución. Quien tenga el problema, escribame, yo les dare la solución que me costo encontrarla. Saludos!

# August 1, 2007 10:03 PM

Rows ha opinado:

Muchas gracias por tu explicación!

# March 19, 2008 9:31 PM

marta ha opinado:

necesito ayuda porque a mi me da este error:

"Es incorrecto utilizar una sección registrada como allowDefinition='MachineToApplication' mas allá del nivel de aplicación. Este error puede tener como origen un directorio virtual que no esté configurado como aplicación en IIS."

no consigo safarme y he probado de todo ya...alguna idea?

he cambiado codefile por codebehind,lo del directorio virtual no es proque trabajo en local y nadie mas le pasa...

por favor necesito ayudaaaa

gracias

# June 9, 2008 9:12 AM

steven gomez ha opinado:

esta ha sido una gran ayuda para mi inicio en visual .net, les agradezco por los comentarios y les pido nunca dejen de compartir sus conocimientos que les sirve de mucha ayuda a la gente.

gracias.

# August 6, 2008 6:31 PM

Fidel ha opinado:

bien, me saco de mi problema

gracias che

# September 26, 2008 7:00 PM

Stick ha opinado:

Me sucedió cuando agregué en el IIS una aplicación cuya carpeta se encontraba anidada dentro de otra... simplemente eliminé la carpeta de más y listo.

Error de novato, pero tal vez a alguien más le sirva.

# January 16, 2009 5:34 AM

Pablo A Castillo ha opinado:

Muchas gracias por el contenido, pues me soluciono un problema.

# March 7, 2009 8:15 PM

Jm ha opinado:

cómo se puede corregir sin crear el directorio virtual en el IIS, por ejemplo para subirlo a un hosting, en el que se necesitan 2 apps para el mismo dominio completamente separadas y ambas bajo la raíz / del sitio.

# March 10, 2009 7:31 AM

kvargas ha opinado:

Hola!

Yo tengo el mismo problema y no lo he podido solucionar, no es mi Web.config duplicado, no es por el Codefile!!!

Gracias.

# March 10, 2009 3:16 PM

Devinnov ha opinado:

No he podido crear el directorio virtual en palicacion, la opcion "Crear", parece que no viene en mi IIS 5.1, hay alguan alternativa, o deveras estoy perdido?

# June 19, 2009 5:35 PM

Ana ha opinado:

Me ha pasado un par de veces lo que comenta Stick...gracias, con esa respuesta lo solucioné!...

# July 9, 2009 4:14 PM

Antonias ha opinado:

gracias, teni ese error xq pensaba q podia poner tantos web.config como quisiera.

pero lo solucione

# October 10, 2009 11:44 PM
Deja tu comentario

(requerido) 

(requerido) 

(opcional)

(requerido)