Error al usar una sección registrada como allowDefinition = ‘MachineToApplication’ más allá del nivel de aplicación

Es un error utilizar una sección registrada como allowDefinition = ‘MachineToApplication’ más allá del nivel de la aplicación.

La línea superior en todas mis páginas aspx en mi directorio / portal / tiene este mensaje de error, y sé que es común. He buscado en Google este mensaje de error sin fin, y veo muchas publicaciones que me dicen que configure / portal / folder como una aplicación en IIS (que tengo), y más publicaciones que me dicen que he nested web.configs (pero ninguna de las publicaciones ofrece orientación hacia una solución).

Mi configuración es que tengo un web.config en mi directorio raíz, y luego estoy tratando de hacer un portal de la compañía, en el directorio / portal /. El directorio / portal / tiene su propio (necesario) web.config.

Mi web.config línea 50 es así:

    

Así que tengo domain.com/web.config AND domain.com/portal/web.config … por lo que mi página domain.com/portal/default.aspx no se cargará.

¿Cuál es la verdadera solución para esto? ¿De alguna manera encuentro una manera de fusionar mi raíz web.config con mi / portal / directorio web.config, o estoy fuera de la base aquí?

Cualquier orientación sería muy apreciada!

Solo para información de antecedentes; La información de configuración para un sitio web ASP.NET se define en uno o más archivos Web.config. Los ajustes de configuración se aplican de forma jerárquica. Hay un archivo Web.config “global” que detalla la información de configuración de línea base para todos los sitios web en el servidor web; este archivo vive en la carpeta %WINDIR%\Microsoft.Net\Framework\version\CONFIG . También puede tener un archivo Web.config en la carpeta raíz de su sitio web. Este archivo Web.config puede anular las configuraciones definidas en el archivo “global” Web.config, o agregar nuevas. Además, puede tener archivos Web.config en las subcarpetas de su sitio web, que definen nuevas configuraciones o anulan las configuraciones definidas en los archivos Web.config más arriba en la jerarquía.

Ciertos elementos de configuración en Web.config no se pueden definir más allá del nivel de aplicación, lo que significa que deben estar definidos en el archivo “global” Web.config o en el archivo Web.config en la carpeta raíz del sitio web. El elemento es uno de esos ejemplos. El mensaje de error anterior indica que hay un archivo Web.config en una de las subcarpetas del sitio web que tiene uno de estos elementos de configuración que no se puede definir más allá del nivel de la aplicación.

Fuente: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx

Has identificado correctamente los 2 enfoques posibles.

1 – Dependiendo del contenido de su segundo web.config y si su configuración lo permite (es decir, el mismo método de autenticación), agregue la configuración de y cualquier otro elemento que deba definirse globalmente en la parte superior web.config

2 – Si no puede fusionar los contenidos de web.config, entonces debería poder convertir la subcarpeta en una aplicación web en IIS siguiendo los pasos que figuran a continuación en este enlace. El enlace original ya no funciona. (ver archivado ) Espero que esto ayude.

Como RY4N dice más arriba, no es necesariamente el archivo .config en su carpeta Proyecto lo que causa el problema. En algunos casos, he encontrado que ejecutar una comstackción en el perfil de depuración dejará detritus en la carpeta de depuración del proyecto en cuestión. A menudo hay un archivo web.config aquí que lleva al error anterior cuando posteriormente ejecuta una comstackción en el perfil de lanzamiento.

La solución que me funciona aquí es eliminar toda la carpeta Debug que las comstackciones anteriores crearon en el directorio del proyecto.

Por lo que vale, recibí el error: “Es un error utilizar una sección registrada como allowDefinition = ‘MachineToApplication’ más allá del nivel de la aplicación”. y terminé resolviéndolo borrando los directorios \ myWebApp \ obj \ Debug y \ myWebApp \ obj \ Release. También necesitaba establecer una página de inicio predeterminada. Pero, luego la aplicación comenzó bien. HTH.

También estaba sucediendo en la computadora de mi casa, pero SOLO cuando habilité Build Views en la configuración de lanzamiento Y construí una configuración de Release. De lo contrario, no sucedió.

Aunque la opción Crear vistas es muy buena, terminé deshabilitándola porque este “error” siempre aparecía y no podía ejecutar la aplicación.

Sólo para decir

Si Actualiza (p. Ej., 2008 -> 2010) Un proyecto Visual Studio creará una copia de seguridad (si lo permite) en la solución del proyecto que se agrega a la nueva solución. El antiguo Webconfig es donde el error señalado anteriormente puede emanar desde .

Archivo Web.config en una de las subcarpetas del sitio web que tiene uno de estos elementos de configuración que no se puede definir más allá del nivel de la aplicación ” @benni_mac_b

Para solucionarlo : simplemente elimine la carpeta de respaldo del proyecto y la solución, en este escenario.

He encontrado otra posible razón por la que esto ocurre.

Tenía una aplicación web anterior incorporada en 2.0. Lo migré a una solución 4.5.

La aplicación se compiló y depuró muy bien cuando estaba dentro de Visual Studio, pero luego cuando intenté Publicar la aplicación web, este error ocurrió una y otra vez.

Finalmente descubrí que el problema era que Build Action para el archivo web.config era “Recurso incrustado” en lugar de “Contenido”. Además, el directorio Copiar a salida se configuró en “Copiar siempre” en lugar de “No copiar”. No sé cuándo se realizaron estas configuraciones, pero creo que fue en la versión 2.0 de la aplicación.

La modificación de la configuración del archivo web.config permitió que la acción Publicar en la publicación de Visual Studio 2012 funcionara sin problemas.

Tuve el mismo problema en un proyecto de MVC. El error ocurrió cuando intenté publicar. Resultó que la carpeta obj debería estar vacía (o al menos no contener ningún web.config ).

Correr Clean no funcionó el truco para mí.

Resolví el problema limpiando la carpeta obj antes de cualquier construcción (la construcción del proyecto no tardará tanto en mi caso).

Descargué el proyecto y agregué lo siguiente al objective BeforeBuild

        

Espero que esto ayude

Experimenté este error solo durante la publicación de la aplicación.

Las propiedades de los archivos web.config (y transformaciones) se configuraron como:

  • Build Action - None
  • Copy to Output - Always .

La solución fue cambiar la configuración a:

  • Build Action - Content
  • Copy to Output - Do not Copy

También tuve este problema y se produjo después de que utilicé el Asistente de publicación para publicar mi sitio en la web.

Después de investigar mucho me encontré con este informe de errores en el sitio web de Connect, https://connect.microsoft.com/VisualStudio/feedback/details/779737/error-allowdefinition-machinetoapplication-beyond-application-level

Respondió un representante de MS y, además de explicar por qué este era un problema que ocurría al publicar, también incluyó una solución temporal que solucionó el problema.

Eliminar y crear el directorio virtual de nuevo. Haga clic derecho y convierta el directorio virtual a ” Aplicación

“Es un error utilizar una sección registrada como allowDefinition = ‘MachineToApplication’ más allá del nivel de la aplicación. Este error puede deberse a que un directorio virtual no está configurado como una aplicación en IIS”.

Tuve este problema en VS.NET. Resultó que cuando estaba configurando algunas transformaciones de configuración había configurado erróneamente la propiedad del archivo Web.config “Copiar siempre”. Normalmente configuro mis archivos de transformación en “Copiar siempre” pero dejo el archivo raíz web.config como “No copiar”.

Tenga cuidado, ya que el cambio de las propiedades de web.config también cambia todas las transformaciones anidadas.

Entonces, para arreglar:

1) Cambia web.config a “No copiar”

2) Opcionalmente, si usa transformaciones de configuración, configúrelas en “Copiar siempre”

3) Elimine las carpetas obj y bin de la solución (puede que no estén visibles, seleccione el nodo del proyecto en el Explorador de soluciones y haga clic en el botón de la barra de herramientas “Mostrar todos los archivos”.

4) Publicar

Trabajó para mi.

Para mí, la razón fue que la carpeta obj estaba debajo de la carpeta del sitio web y apareció web.config después de crear diferentes configuraciones. Resolví el problema en vs2012 moviendo la carpeta obj fuera del sitio web. Para hacer esto he agregado manualmente (en el bloc de notas) $ (SolutionDir) \ Obj \ $ (Configuración) a cada configuración en el archivo de proyecto del sitio web.

Estaba teniendo el mismo problema cuando publicaría el sitio, si construyo el sitio, no tengo problemas, pero durante la publicación obtendría este terrible error:

“Es un error utilizar una sección registrada como allowDefinition = ‘MachineToApplication’ más allá del nivel de la aplicación. Este error puede ser causado por un directorio virtual que no se configura como una aplicación en IIS”

Probé todo lo que se ha indicado aquí en esta publicación sin recurrir, lo que funcionó para mí fue crear un nuevo perfil de publicación exactamente igual al que he estado usando y que funciona bien, no obtengas el error con el nuevo perfil pero hazlo con el viejo. No estoy seguro de cuál es la diferencia, pero al menos puedo publicar mi proyecto MVC.

Espero que esto ayude a alguien !!

Aquí hay otro motivo: si copia toda su aplicación web en una de sus propias subcarpetas, obtendrá este error. Logré hacer esto en un sitio antiguo cuando copié de una máquina a otra; solo me pidieron que mirara el sitio después de un intervalo de aproximadamente 2 años y se produjo el error. Me costó un poco averiguarlo, ya que no tenía múltiples archivos de configuración.

Tuve este problema y resolví limpiando mi solución de ensamblajes antiguos, etc.

de vs: Build> Clean Solution

luego Reconstruir

Inicio de Windows -> abrir Sitios -> IIS -> haga clic con el botón derecho en su sitio -> Administrar sitio web -> Configuración avanzada -> explorar ruta física -> intente seleccionar la subcarpeta de la selección actual.

la lógica es que el archivo de configuración web dentro de la subcarpeta está tratando de hacer cambios y esto no está permitido, tiene que ser la carpeta seleccionada: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx

Asegúrese de no caer en la trampa de acceder a su sitio local incorrectamente a través de localchost / mysite.test que debería ser mysite.test que le dará este error.

Cuando accede a su sitio como localhost / dir_name, en este caso, su web.conf cae por debajo del nivel raíz y, por lo tanto, este error.

Estaba migrando aplicaciones y la aplicación tenía varias aplicaciones (múltiples web.configs) dentro de ella. Lo que hice fue ingresar a IIS, luego hacer clic derecho en las subcarpetas y luego “Convertir a aplicación” y funcionó.

Recibí este error de manera diferente a todos los demás:

Estaba migrando desde vs2010 con el proyecto de implementación web a vs2012 y un nuevo perfil de publicación web.

Creé un nuevo proyecto de publicación web en vs2012 para publicar en el sistema de archivos (tenemos un instalador independiente, esta es una aplicación comercial) y estaba publicando en una carpeta que estaba dentro del proyecto web existente que está vinculado a IIS.

Esto causó el error durante la publicación que me desconcertó al principio porque estaba publicando en el sistema de archivos, no en IIS (pensé).

La solución consistía en cambiar la publicación a la carpeta para que fuera del proyecto web.

También recibo este error cuando trato de implementar un sitio web secundario en el sitio web.

La solucion es:

  1. Debe eliminar algunas tabs de configuración como: perfil , membresía , roleManager , sessionState en el sub web.config
  2. Cambie la Autenticación a Ninguna como:
  3. Y vaya a IIS, haga clic derecho en la subcarpeta > Agregar aplicación.
  4. Restablezca IIS para resolver este problema.

SI recibes otro problema, no dudes en contactarme, quizás pueda ayudarlo.

Haga clic en el archivo Web.config del Explorador de soluciones y cambie

Copiar al directorio de salida = No copiar

Estuvo bien en el servidor localhost pero cuando publiqué un lanzamiento en el servidor, comencé el mismo error en algunas páginas. Luego limpié la solución y reconstruí y publiqué, las cosas se arreglaron.

A veces, la respuesta simple es la mejor. Tenía dos archivos web.config en mi proyecto. El que está en el nivel principal es donde necesitaba hacer el cambio para lidiar con el tiempo de espera de mi sesión (que desencadenó este problema). Tenía un archivo de configuración separado en mi directorio Razor Views, que tenía configuraciones para Razor y sus vistas. Estaba agregando una sección allí (¡no a nivel de aplicación!). Sin darme cuenta de que tenía dos archivos web.config separados, probé todo excepto buscar lo obvio.