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:
<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í:
<system.web>
<authorization>
<allow roles=«administradores« />
<deny users=«*« />
</authorization>
</system.web>
</configuration>
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!!
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?
ivan
Totalmente correcto Augusto!!!
Por cierto. Un abrazote grande y a ver cuando quedamos y hacemos una cena o algo!!
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…)
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!
anonymous
Muchas gracias por tu explicación!
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
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.
anonymous
bien, me saco de mi problema
gracias che
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.
anonymous
Muchas gracias por el contenido, pues me soluciono un problema.
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.
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.
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?
anonymous
Me ha pasado un par de veces lo que comenta Stick…gracias, con esa respuesta lo solucioné!…
anonymous
gracias, teni ese error xq pensaba q podia poner tantos web.config como quisiera.
pero lo solucione
anonymous
Esta entrada gira alrededor de IIS 6.0, pero los conceptos también se pueden aplicar a IIS 7.0
anonymous
Parce esto no me sirve. sigo con el errocito maricon ese !
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.
anonymous
Acá esta la solucion http://www.desarrolloweb.com/articulos/1021.php
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
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 y ponerlo en alguna también se presenta el error.. directamente.
Inclusive si dentro del Web.config se intenta quitar el bloque
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
Bueno, espero les sirva la respuesta.
Cualquier duda, mi correo es dcamacho31@hotmail.com
Saludos.
anonymous
Gracias Diego.
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