Error: allowDefinition = 'MachineToApplication' más allá del nivel de aplicación


193

He descargado el proyecto en línea en ASP.Net. Al ejecutar la aplicación me sale un 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.

¿Qué cambios debo hacer en web.config o en otro lugar para que esto funcione?


53
Ninguna de las respuestas encontradas en la web funcionó para mí. Mi problema se resolvió mostrando todos los archivos / carpetas ocultos y eliminando la objcarpeta.
The Muffin Man

66
Este problema aún se manifiesta en VS2012. He abierto un informe de error con Microsoft. Cualquier persona que experimente el problema, favor de votar el informe de error connect.microsoft.com/VisualStudio/feedback/details/779737/…
Eric J.

44
eliminar la carpeta obj también resolvió este problema para mí. gracias @ Nick! (perdón por el avivamiento)
Jordan Wayne Crabb


en mi caso, el extra web.config en una subcarpeta causa este problema. Cuando elimino ese web.config adicional, el error desaparece
Dio Phung

Respuestas:


96

Acabo de encontrar esta "delicia". Parece presentarse justo después de haber publicado una aplicación web en modo de lanzamiento.

La única forma de solucionar el problema que he encontrado consiste en seguir esta lista de verificación:

  1. Solución limpia mientras su solución está configurada en modo Release.
  2. Solución limpia mientras su solución está configurada en modo de depuración.
  3. Construya mientras su solución está configurada en modo de depuración.

18
La única respuesta que funcionó para mí también. Tenía muchos otros errores esperándome después de esto, pero no estaban relacionados. Llegué estableciendo MvcBuildViewsa true.
Benjamin

+1 BTW: Creo que la razón por la que esto funcionó para mí fue que la compilación más reciente que tuve fue Debug . Abrí la solución, solucioné un error e intenté compilar en modo R Release . La limpieza en Release no funcionó, pero la limpieza en Debug sí. (Probablemente un combo de los 2 era lo que se necesitaba, es decir, eliminar cualquier referencia antigua a dlls, ya sea Debug o Release ).
Scotty.NET

44
Hice una limpieza , luego fui a * propiedades del proyecto -> Web -> Crear directorio virtual y luego el problema se resolvió
gldraphael

Una limpieza y reconstrucción mientras está en modo de depuración es todo lo que necesito para mí. No es necesario alternar entre lanzamiento y depuración. Pero sí, la LIMPIEZA es muy importante. Ese es el meollo del asunto.
markaaronky

1
Clean no está disponible en mi caso, que nunca había visto antes. Esta es una aplicación VB.NET muy antigua que heredé de un ex colega.
tnk479

82

Acabo de encontrar esta publicación y eso me estaba sucediendo.
Solo Cleanel proyecto y el error desaparece. (debe ser un error VS2010)


esta solución si obtiene esto como un error en Visual Studio.
Gedeón

22
A veces, clean no borra la objcarpeta. Esto a veces también necesita eliminarse.
jaypeagi

1
Ni Clean ni eliminar obj funcionaron. La solución de Johnny Reilly funcionó para mí.
Benjamin

Tuve que correr limpio en los modos de depuración y liberación para deshacerme de esto. Ejecutarlo solo para depurar no pareció resolver el problema.
Juha Palomäki

El mismo problema todavía existe en VS2013SP1. Una limpieza simple me permite implementar nuevamente.
Brian Knoblauch el

25

Acabo de tener este problema al crear una segunda versión de mi sitio web. No sucedió cuando lo construí la primera vez.

Acabo de eliminar las carpetas bin y obj, ejecuté una solución limpia y la volví a construir, esta vez sin ningún problema.


2
Esta es la única solución que me funcionó en VS Express 2012 para Web. Además, solo comencé a recibir este error después de crear una configuración de solución y agregar MvcBuildViews establecido en true a su PropertyGroup en la fuente .csproj.
Jeremy Cook

20

Ninguna. Debe configurar el directorio donde colocó el sitio web como una aplicación web dentro de IIS .


1
Aunque técnicamente eso es un cambio "en otro lugar para que esto funcione";)
Zhaph - Ben Duguid

2
¡y esta es la solución si obtienes esto como un error en tu aplicación web! = P
gideon el

Ya estaba configurado como una aplicación. La solución de Johnny Reilly funcionó en mi caso.
Benjamin

Solo estoy tratando de hacer que la aplicación de plantillas Webforms funcione. Está bien en localhost pero no en un servidor en la LAN. Esta solución funcionó para mí: VS2015 CE, Windows Server 2008 en mi LAN. Usé esta página de MS para explicar qué hacer en IIS: support.microsoft.com/en-gb/kb/917413 . No hay cambios en el código de la plantilla.
Tim

16

Este error ocurre cuando intenta abrir un proyecto como un sitio web. La forma más fácil de determinar si ha creado un sitio web o un proyecto es verificar la carpeta de la solución (es decir, dónde guardó el código) y ver si tiene un archivo * .sln en el directorio raíz, si lo tiene, entonces ' He creado un proyecto.

Solo para agregar, encontré este error justo ahora cuando intenté abrir un proyecto que creé hace un tiempo seleccionando "Archivo", "Abrir sitio web" en los menús de Visual Studio, mientras que debería haber seleccionado "Archivo", "Abrir proyecto" en lugar. Me emocioné tan pronto como me di cuenta :)


este también era mi problema
mgrenier

13

En Visual Studio 2013 luché con esto por un tiempo y es bastante fácil de resolver, solo siga lo que dice la excepción "el directorio virtual no está configurado como una aplicación en IIS"

En mi caso yo había WebServiceplantado adentro IIS websiteasí que

  1. Abrí el sitio web en el administrador de IIS
  2. clic derecho en la carpeta WCF
  3. hecho clic Convert to Application
  4. y luego enviado con Ok

WCF está de vuelta y funcionando.


1
Me encontré con este problema cuando moví mi aplicación al sitio web predeterminado. El punto 3 hizo el truco para resolver mi problema.
bikram s.

Esto funcionó para mí cuando nos mudamos a un nuevo servidor web. Después de hacer una "Convertir a aplicación", el símbolo de la carpeta cambió y la aplicación web ASP.NET MVC comenzó a funcionar en ese servidor web.
Greg Barth

11

El error sugiere que el código que está utilizando espera que se configure un directorio virtual en IIS.

Busque la documentación y agregue el directorio virtual requerido. Debe ser un directorio que contenga un directorio web.config(no el directorio raíz).


8
Eliminar un segundo web.config en un directorio inferior resolvió el problema para mí.
Lucas B

10
Uno de mis muchachos tenía el suyo <authentication mode="Forms"><forms name="..." loginUrl="~/Login/Login/" timeout="2880" /></authentication>en la carpeta de troncos Web.configen Viewslugar de en la carpeta del tronco, lo que causó este problema.
Serj Sagan

10

Si tiene un proyecto MVC con vistas habilitadas de compilación, una de las soluciones es eliminar la carpeta obj antes de compilar. Añadir al archivo del proyecto:

<Target Name="BeforeBuild">
    <!-- Remove obj folder -->
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
    <!-- Remove bin folder -->
    <RemoveDir Directories="$(BaseOutputPath)" />
</Target>

Aquí hay un artículo: Cómo eliminar la carpeta bin y / u obj antes de la compilación o implementación


8

Un cambio reciente de web.config puede estar en el archivo web.config incorrecto.

Se <machineKey...>ha agregado una propiedad a Views / web.config . No importa cuántas Limpiezas y Reconstrucciones permanezca el error. La solución fue mover la propiedad a la raíz /web.config .


Accidentalmente copiamos el archivo web.config principal en la carpeta / Views. Coloque la versión original, mucho más pequeña para la carpeta Vistas allí y el sitio funcionó nuevamente.
Grandizer

6

si alguna vez encuentras este 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

SOLUCIÓN
Tuve el mismo problema con VS 2012. Resolví esto por

  1. Descarga tu proyecto actual
  2. edita tu .csproj
  3. Encuentra esto <MvcBuildViews>false</MvcBuildViews>
  4. En lugar de falso, cambie el valor a verdadero
  5. Vuelva a cargar su proyecto y no debería tener más este error

Si tiene una solución, entonces es eliminar el contenido de la carpeta obj en el proyecto generado por el compilador.


18
Eso es raro, el establecimiento MvcBuildViewsde truees cómo llegué el error en el primer lugar.
Benjamin

También comencé a recibir el mensaje de error después de cambiar MvcBuildViews a verdadero. Me deshice del mensaje de error cambiando el valor nuevamente a falso.
Juha Palomäki

3
Hice una "Solución limpia" en los modos de lanzamiento y depuración y ahora la compilación también funciona con<MvcBuildViews>true</MvcBuildViews>
Juha Palomäki

@ JuhaPalomäki super dulce! Gracias.
Haroon

Tuve exactamente la situación opuesta a la @visar_uruqi. Quiero decir que en mi archivo .csproj tenía la opción MvcBuildViews establecida en verdadero y cuando configuré en falso el error se omitió (no se muestra).
Bronek

5

En mi caso, el problema apareció solo después de que publiqué el proyecto en el subdirectorio. Debido a mi falta de conocimiento, he colocado mi web_publishsubdirectorio dentro del web_projectdirectorio.

Está claro que web_publishcontiene también los mismos Web.configcorreos electrónicos que contiene el proyecto. Sin embargo, el web_projectno sabe que mi web_publishdebe evitarse al buscar Web.configcorreos electrónicos en los subdirectorios anidados. De esta manera, los Web.configcorreos electrónicos se duplicaron y apareció el error.

La solución fue colocar mi web_publishen otro lugar.


5

En mi caso, había una carpeta de "Copia de seguridad" que contenía otra copia de todo el sitio web allí. Esto significó otro web.configy la construcción falló con este error. Eliminé la carpeta "Copia de seguridad", hice una solución limpia en las compilaciones de depuración y lanzamiento, y el error desapareció.


Tuve una situación similar, alguien había creado una subcarpeta "Publicada" dentro de la raíz del sitio web en el disco (este es un Proyecto Web antiguo, uno de los que no tiene un archivo de Solución), y este tenía un Web.config en él. El error ocurrió cuando Visual Studio trató de compilarlo, y ninguna cantidad de Limpieza / Eliminación de carpetas "obj", etc., solucionó eso, por supuesto. He visto bastantes casos de este error, y casi siempre es un Web.config duplicado que se esconde en algún lugar ... (¡también un mensaje de error muy pobre!)
Detalle

4

En mi caso,

La solución contiene 6 proyectos, 1 directorio principal y 5 subdirectorios. todos los subdirectorios que tienen web.config.

Al ejecutar cualquier página dentro de los subdirectorios, recibía el mismo error.

Eliminé esta línea de web.config,

<authentication mode="Windows"/>

Eso funcionó para mí.


¿Qué línea eliminaste?
Mark Berry

La línea estaba allí pero no se mostraba debido a algún problema de sangría, supongo. Edité y pegué el código en un bloque de código, se muestra ahora. Por favor verifique y avíseme si puedo ayudar en algo.
p_champ

Gracias, eso confirma la línea en la que también me estaba fallando. Solo tengo un sitio, así que lo solucioné abriéndolo como un sitio web en lugar de un proyecto.
Mark Berry

4

Limpia tu proyecto Elimina la carpeta / obj (¿probablemente usando publicar e implementar? - hay un error)


La única solución que funcionó para mí. Llegué aquí configurando <MvcBuildViews> verdadero </MvcBuildViews>.
Paul

3

Mi problema fue que accidentalmente publiqué mi servicio web en una ubicación precompletada en una nueva instalación de VS2010.

Había publicado en una carpeta llamada PreCompiledWeb , y sospecho que la presencia de web.config lo estropeó.

Simplemente sacudí la carpeta y actualicé el proyecto.

Al hacer doble clic en este error, me llevó a ese archivo web.config erróneo, que me avisó.


2

Puede ser el problema de la versión, ya que descarga el proyecto de .Net framework 2.0 y desea abrirlo en el VS2008, entonces deberá actualizar a la última versión y VS creará la copia de seguridad de la carpeta en el mismo directorio raíz. Obtenga la respuesta aquí .


La respuesta de ranganh aquí proporciona más detalles.
Mark Berry

2

Tuve este error al crear la solución con el Proyecto de implementación web creado en mi solución. Resuelvo el error eliminando la carpeta donde está construido el Proyecto de implementación web. Esta carpeta se especifica en el atributo "Carpeta del proyecto" de las propiedades WDP


2

Eliminar carpetas bin y obj. Luego reconstruya la solución.


Para el Explorador de archivos, utilice la consulta de búsqueda "obj" kind: = folder y "bin" kind: = folder para buscar / eliminar estas carpetas. Esto funcionó para mí.
Robert J. Good

2

Aparentemente había dos archivos web.config en mi solución. Estoy usando MVC4 y había otro archivo de configuración en Vistas y estaba haciendo el cambio en el archivo incorrecto. Fijo allí me ayudó.

Pero siempre puede cambiar la ruta / redirección predeterminada en el archivo global.asax.


1

Probablemente tenga una carpeta de proyecto sub asp.net dentro de la carpeta del proyecto que no está configurada como directorio virtual. Configure el proyecto para que se ejecute en IIS.



1

Tengo este problema con mayor frecuencia si "verdadero" está habilitado en el archivo del proyecto.

  1. Establecer falso

Como dice Jonny:

  1. Solución limpia mientras su solución está configurada en modo Release.
  2. Solución limpia mientras su solución está configurada en modo de depuración.
  3. Construya mientras su solución está configurada en modo de depuración.

1

Tenía un proyecto que no quería que fuera una aplicación web, quería que fuera una carpeta. La respuesta fue eliminar el archivo web.config por completo. Solo pertenece a la raíz de una aplicación.


1

Si enfrenta este problema mientras publica su sitio web o aplicación en algún servidor, la solución simple que utilicé fue convertir una carpeta que contiene archivos a una aplicación web.


44
Hola, bienvenido a Stack Overflow! ¿Puedes por favor ampliar tu respuesta? ¿Podría explicar cómo convertir la carpeta a una aplicación web? Esto ayudará a otros a entender mejor su respuesta.
Jesse

1
En el Administrador de IIS, en el panel Conexiones a la derecha, hace clic con el botón derecho en el directorio debajo de los sitios que ha creado (o Sitio web predeterminado) y elige Convert to Application.
Aske B.

1

Tengo el mismo problema en VS 2013 después de publicar mi proyecto en modo de depuración. El problema se resolvió eliminando los archivos obj /


1

Tengo un proyecto de sitio web.

En mi caso, moví el archivo de solución a otra ruta y eso causó el problema. Lo restauré a la ubicación anterior y el problema se fue.


1

Para cualquiera que todavía esté buscando, mi solución fue eliminar las carpetas bin y obj y reiniciar Visual Studio parece solucionarlo.


1

A través de Visual Studio, había publicado un servicio WCF a través de FTP en un servidor externo. Funcionó bien localmente y al publicar en un servidor interno, pero no en el externo. La solución fue publicar sin proporcionar un Site Path (en otras palabras, publicar directamente en la raíz del directorio virtual).

No estoy seguro de por qué funcionó, ya que ya había intentado mover los archivos a la raíz a través de un Cliente FTP externo, entre muchos otros intentos, incluidos todos los enumerados aquí. Tal vez fue algo con el perfil de publicación, como lo fue para FabianVal . Pero ya no estoy de humor para realizar pruebas en este momento, ya que tengo prisa por ponerme al día después de todos los días desperdiciados en este problema.


0

Consejo 1: limpiar y luego reconstruir.

Consejo 2: simplemente cierre VS y ábralo nuevamente.

consejo 3: el proyecto descargado puede estar dentro de otra subcarpeta ... abra la carpeta que tiene sus archivos .net.

c: / demo1 / demo / (todos los archivos)

Debería tener que abrir la demostración desde vs ... no demo1.


0

Intenté todas las soluciones anteriores, pero ninguna funcionó para mi problema. (Estoy seguro de que hay 1000 soluciones a este problema) Para mi situación, estaba intentando publicar mi servicio web WCF que tenía en prueba en producción.

Sin embargo, no me di cuenta de que en producción solo somos HTTPS, lo que significa que redirigimos todo a HTTPS. Como resultado, estaba apuntando al servicio a través de HTTP en lugar de HTTPS, lo que causó el error. La solución en este escenario era simplemente cambiar el protocolo de dirección a HTTPS en lugar de HTTP.

Espero que ayude a alguna pobre alma que está tratando de resolver este problema.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.