Top

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

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>

Iván González Vilaboa
24 Comments
  • fpeula

    …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!!

    9 febrero, 2007 at 9:52 am Responder
  • aruiz

    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?

    9 febrero, 2007 at 12:03 pm Responder
  • ivan

    Totalmente correcto Augusto!!!

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

    9 febrero, 2007 at 12:24 pm Responder
  • aruiz

    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…)

    9 febrero, 2007 at 4:17 pm Responder
  • anonymous

    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!

    1 agosto, 2007 at 10:03 pm Responder
  • anonymous

    Muchas gracias por tu explicación!

    19 marzo, 2008 at 9:31 pm Responder
  • anonymous

    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

    9 junio, 2008 at 9:12 am Responder
  • anonymous

    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.

    6 agosto, 2008 at 6:31 pm Responder
  • anonymous

    bien, me saco de mi problema

    gracias che

    26 septiembre, 2008 at 7:00 pm Responder
  • anonymous

    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.

    16 enero, 2009 at 5:34 am Responder
  • anonymous

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

    7 marzo, 2009 at 8:15 pm Responder
  • anonymous

    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.

    10 marzo, 2009 at 7:31 am Responder
  • anonymous

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

    10 marzo, 2009 at 3:16 pm Responder
  • anonymous

    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?

    19 junio, 2009 at 5:35 pm Responder
  • anonymous

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

    9 julio, 2009 at 4:14 pm Responder
  • anonymous

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

    10 octubre, 2009 at 11:44 pm Responder
  • anonymous

    Esta entrada gira alrededor de IIS 6.0, pero los conceptos también se pueden aplicar a IIS 7.0

    3 junio, 2010 at 5:10 am Responder
  • anonymous

    Parce esto no me sirve. sigo con el errocito maricon ese !

    28 junio, 2010 at 5:36 pm Responder
  • anonymous

    Listo muchachos logre arreglarlo solo borre una linea que tenia extra y funciono les agradezco su atencion y colaboracion con mi pequeño problema 🙂
    tengan un bueno dia.

    28 junio, 2010 at 6:00 pm Responder
  • anonymous
    2 julio, 2010 at 4:23 am Responder
  • anonymous

    Buenas Tardes a Todos.
    En mi caso aparecio el error mencionado al actualizar
    Telerik Q2 al Telerik Q3.
    Una vez que abri el proyecto y Q3 me pedio actualizarlo genero carpetas de backup y otros, lo cual se cargo en el directorio de la Solucion.
    Luego di Genera Solucion, y ahi salio el erro que en este Hilo menciona,
    Lo que hize fue borrar esos direcctorios generados al actulaizar. cosa q ya no era util
    Eureka. Solucionado. bueno ,espero mi aporte sirva a todos.

    Saludos

    25 noviembre, 2010 at 10:22 pm Responder
  • anonymous

    SOLUCION:

    El error se presenta porque se intenta aplicar la configuración de AUTENTICACION en otro lugar que no es la ubicación raíz del Web.config
    Inclusive si dentro del Web.config se intenta quitar el bloque y ponerlo en alguna también se presenta el error.
    Esto es porque la AUTENTICACION (no la AUTORIZACION) tiene que estar en el RAIZ de la aplicación ASP.NET, no se puede ubicar en otro lado ni duplicar.
    AHORA, si necesitás que si o si haya un modo distinto de AUTENTICACION dentro de una carpeta especial del proyecto, entonces tenés que crear un nuevo DIRECTORIO VIRTUAL dentro del IIS, pero ojo que esto es equivalente a crear una nueva APLICACION para el IIS (en términos de gestión de recursos e instancias de objetos HTTTAplication).
    En mi caso, como lo que necesitaba era definir un único sistema de AUTENTICACION (Forms) pero restringir el acceso en algunas carpetas, lo indiqué en el archivo Web.config del directorio principal del proyecto y luego, en las carpetas «restringidas» agregué un nuevo Web.config con la etiqueta .
    Claro que esto último no era estrictamente necesario porque podía aprovecha el Web.config principal y abrir allí un bloque directamente.

    Bueno, espero les sirva la respuesta.

    Cualquier duda, mi correo es dcamacho31@hotmail.com

    Saludos.

    17 enero, 2011 at 3:03 am Responder
  • anonymous

    Gracias Diego.

    20 enero, 2011 at 4:11 am Responder
  • anonymous

    como estan ayudenme por favor tengo instalado visual studio 2008 y sql server 2008 y tengo ese erro que no se reconoce la metabase antes esto no me salia paso desde que instalo un paquete de seguridad y tengo mis proyecto en visual y ni uno solo me deja ejecturalo me dice que no tengo permiso de autenticacion ayudenme tengo tarea y no se que ahacer si no tendre que borrar mi windows y volver a instalar

    7 abril, 2011 at 8:07 pm Responder

Post a Reply to anonymous Cancel Reply