Erreur: allowDefinition = 'MachineToApplication' au-delà du niveau de l'application

193

J'ai téléchargé le projet en ligne dans ASP.Net. Lors de l'exécution de l'application, j'obtiens une erreur

C'est une erreur d'utiliser une section enregistrée comme allowDefinition = 'MachineToApplication' au-delà du niveau de l'application. Cette erreur peut être provoquée par un répertoire virtuel qui n'est pas configuré en tant qu'application dans IIS.

Quelles modifications dois-je apporter dans web.config ou ailleurs pour que cela fonctionne?

Deepali
la source
53
Aucune des réponses trouvées sur le Web n'a fonctionné pour moi. Mon problème a été résolu en affichant tous les fichiers / dossiers cachés et en supprimant le objdossier.
The Muffin Man
6
Ce problème se manifeste toujours dans VS2012. J'ai ouvert un rapport de bogue avec Microsoft. Toute personne rencontrant le problème, veuillez voter pour le rapport de bogue connect.microsoft.com/VisualStudio/feedback/details/779737/…
Eric J.
4
la suppression du dossier obj a également résolu ce problème pour moi. merci @Nick! (désolé pour la renaissance)
Jordan Wayne Crabb
SOLUTION ICI: stackoverflow.com/questions/9300927/…
benni_mac_b
dans mon cas, le web.config supplémentaire dans un sous-dossier cause ce problème. Lorsque je supprime ce web.config supplémentaire, l'erreur a disparu
Dio Phung

Réponses:

96

Je viens de rencontrer ce "délice". Il semble se présenter juste après avoir publié une application Web en mode version.

La seule façon de contourner systématiquement le problème que j'ai trouvé est de suivre cette liste de contrôle:

  1. Nettoyez la solution pendant que votre solution est configurée en mode Release.
  2. Nettoyez la solution pendant que votre solution est configurée en mode Débogage.
  3. Générez pendant que votre solution est configurée en mode Débogage.
John Reilly
la source
18
Seule réponse qui a fonctionné pour moi aussi. J'ai eu beaucoup d'autres erreurs qui m'attendaient après cela, mais elles n'étaient pas liées. Je suis arrivé ici en mettant MvcBuildViewsà true.
Benjamin
+1 BTW: Je pense que la raison pour laquelle cela a fonctionné pour moi était que la version la plus récente que j'avais était Debug . J'ai ouvert la solution, corrigé un bogue et tenté de construire en mode R Release . Le nettoyage dans Release n'a pas fonctionné mais le nettoyage dans Debug l'a fait. (Probablement un combo des 2 était ce qu'il fallait, c'est-à-dire effacer toutes les anciennes références aux dll, que ce soit Debug ou Release ).
Scotty.NET
4
J'ai fait un nettoyage , puis je suis allé dans * propriétés du projet -> Web -> Créer un répertoire virtuel , puis le problème a été résolu
gldraphael
Un nettoyage et une reconstruction en mode débogage sont tout ce dont j'ai besoin. Pas besoin de basculer entre la version et le débogage. Mais oui, le CLEAN est très important. C'est le cœur du problème.
markaaronky
1
Clean n'est pas disponible dans mon cas, ce que je n'ai jamais vu auparavant. Il s'agit d'une très ancienne application VB.NET dont j'ai hérité d'un ancien collègue.
tnk479
82

Je viens de tomber sur ce post et cela m'arrivait.
Juste Cleanle projet et l'erreur disparaît. (doit être un bogue VS2010)

Eduardo Molteni
la source
cette solution si vous obtenez cela comme une erreur dans Visual Studio.
gideon
22
Parfois, clean ne vide pas le objdossier. Cela doit parfois aussi être supprimé.
jaypeagi
1
Ni le nettoyage ni la suppression d'obj n'ont fonctionné. La solution de Johnny Reilly a fonctionné pour moi.
Benjamin
J'ai dû exécuter clean à la fois dans les modes de débogage et de publication pour m'en débarrasser. L'exécuter uniquement pour le débogage ne semblait pas résoudre le problème.
Juha Palomäki
Le même problème existe toujours dans VS2013SP1. Un simple nettoyage me permet de déployer à nouveau.
Brian Knoblauch
25

Je viens d'avoir ce problème lors de la création d'une deuxième version de mon site Web. Cela ne s'est pas produit lorsque je l'ai construit la première fois.

Je viens de supprimer les dossiers bin et obj, d'exécuter une Clean Solution et de la reconstruire, cette fois sans aucun problème.

xiecs
la source
2
C'est la seule solution qui a fonctionné pour moi dans VS Express 2012 pour le Web. De plus, je n'ai commencé à obtenir cette erreur qu'après avoir créé une configuration de solution et ajouté MvcBuildViews défini sur true à son PropertyGroup dans la source .csproj.
Jeremy Cook
20

Aucun. Vous devez configurer le répertoire dans lequel vous avez placé le site Web en tant qu'application Web dans IIS .


la source
1
Bien que techniquement c'est un changement "ailleurs pour faire ce travail";)
Zhaph - Ben Duguid
2
et c'est la solution si vous obtenez cela comme une erreur dans votre application Web! = P
gideon
J'étais déjà configuré en tant qu'application. La solution de Johnny Reilly a fonctionné dans mon cas.
Benjamin
J'essaie simplement de faire fonctionner l'application modèle Webforms. C'est bien sur localhost mais pas sur un serveur sur le LAN. Cette solution a fonctionné pour moi: VS2015 CE, Windows Server 2008 sur mon LAN. J'ai utilisé cette page MS pour expliquer ce qu'il faut faire sur IIS: support.microsoft.com/en-gb/kb/917413 . Aucune modification du code du modèle.
Tim
16

Cette erreur se produit lorsque vous essayez d'ouvrir un projet en tant que site Web. Le moyen le plus simple de déterminer si vous avez créé un site Web ou un projet est de vérifier votre dossier de solution (c'est-à-dire où vous avez enregistré votre code) et de voir si vous avez un fichier * .sln dans le répertoire racine, si vous le faites alors vous ' ai créé un projet.

Juste pour ajouter, j'ai rencontré cette erreur tout à l'heure lorsque j'ai tenté d'ouvrir un projet que j'ai créé il y a quelque temps en sélectionnant "Fichier", "Ouvrir le site Web" dans les menus de Visual Studio alors que j'aurais dû sélectionner "Fichier", "Ouvrir un projet" au lieu. Je me suis fait face dès que j'ai réalisé :)

Pete
la source
c'était aussi mon problème
mgrenier
13

Dans Visual Studio 2013, j'ai eu du mal avec cela pendant un certain temps et il est assez facile à résoudre, il suffit de suivre ce que disent les exceptions "le répertoire virtuel n'est pas configuré en tant qu'application dans IIS"

Dans mon cas, j'avais WebServiceplanté à l'intérieur IIS websitedonc

  1. J'ai ouvert le site Web dans le gestionnaire IIS
  2. a cliqué avec le bouton droit sur le dossier WCF
  3. cliqué Convert to Application
  4. puis soumis avec Ok

WCF est de retour et fonctionne.

Marek
la source
1
J'ai rencontré ce problème lorsque j'ai déplacé mon application vers le site Web par défaut. Le point 3 a fait l'affaire pour résoudre mon problème.
bikram s.
Cela a fonctionné pour moi lorsque nous sommes passés à un nouveau serveur Web. Après avoir effectué une «Conversion en application», le symbole du dossier a changé et l'application Web ASP.NET MVC a commencé à fonctionner sur ce serveur Web.
Greg Barth
11

L'erreur suggère que le code que vous utilisez s'attend à ce qu'un répertoire virtuel soit configuré sur IIS.

Recherchez la documentation et ajoutez le répertoire virtuel requis. Ce doit être un répertoire contenant un web.config(pas le répertoire racine).

Oded
la source
8
La suppression d'un deuxième web.config dans un répertoire inférieur a résolu le problème pour moi.
Lucas B
10
Un de mes gars avait son <authentication mode="Forms"><forms name="..." loginUrl="~/Login/Login/" timeout="2880" /></authentication>dans son Web.configdans le Viewslieu puis le dossier du tronc, ce qui a causé ce problème.
Serj Sagan
10

Si vous avez un projet MVC avec une génération de vues activées, l'une des solutions consiste à supprimer le dossier obj avant la génération. Ajouter au fichier de projet:

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

Voici l'article: Comment supprimer le dossier bin et / ou obj avant la construction ou le déploiement

Chaman
la source
8

Une modification récente de web.config peut se trouver dans le mauvais fichier web.config.

Une <machineKey...>propriété a été ajoutée à Views / web.config . Peu importe le nombre de nettoyages et de reconstructions, l'erreur persiste. Le correctif consistait à déplacer la propriété dans la racine /web.config .

SushiGuy
la source
Nous avions accidentellement copié le Web.config parent dans le dossier / Views. Mettez-y la version originale, beaucoup plus petite, du dossier Views et le site a fonctionné à nouveau.
Grandizer
6

si jamais vous rencontrez cette erreur

C'est une erreur d'utiliser une section enregistrée comme allowDefinition = 'MachineToApplication' au-delà du niveau de l'application. Cette erreur peut être causée par un répertoire virtuel non configuré en tant qu'application dans IIS

SOLUTION
J'ai eu le même problème avec VS 2012. J'ai résolu ce problème en

  1. Déchargez votre projet actuel
  2. modifier votre .csproj
  3. Trouve ça <MvcBuildViews>false</MvcBuildViews>
  4. Au lieu de false, changez la valeur en true
  5. Chargez à nouveau votre projet et vous ne devriez plus avoir cette erreur

Si vous avez, une solution consiste à supprimer le contenu du dossier obj dans le projet généré par le compilateur.

visar_uruqi
la source
18
C'est bizarre, la mise MvcBuildViewsà truecomment je suis l'erreur en premier lieu.
Benjamin
J'ai également commencé à recevoir le message d'erreur après avoir changé MvcBuildViews sur true. Je me suis débarrassé du message d'erreur en remettant la valeur sur false.
Juha Palomäki
3
J'ai fait une "solution propre" dans les modes de version et de débogage et maintenant la construction fonctionne également avec<MvcBuildViews>true</MvcBuildViews>
Juha Palomäki
@ JuhaPalomäki super doux! Merci.
Haroon
J'avais exactement la situation opposée à celle de @visar_uruqi. Je veux dire dans mon fichier .csproj , l'option MvcBuildViews était définie sur true et lorsque je définissais sur false, l'erreur était omise (non affichée).
Bronek
5

Dans mon cas, le problème n'est apparu qu'après avoir publié le projet dans le sous-répertoire. En raison de mon manque de connaissances, j'ai placé mon web_publishsous - répertoire dans le web_projectrépertoire.

Il est clair que le web_publishcontient également les mêmes Web.configs que le projet. Cependant, web_projectne sait pas que my web_publishdoit être évité lors de la recherche de Web.configs dans les sous-répertoires imbriqués. De cette façon, leWeb.config s ont été dupliqués et l'erreur est apparue.

La solution était de placer mon web_publishailleurs.

pepr
la source
5

Dans mon cas, il y avait un dossier «Backup» qui contenait une autre copie de l'ensemble du site Web. Cela signifiait un autre web.configet donc la construction a échoué avec cette erreur. J'ai supprimé le dossier "Backup", j'ai fait une solution propre sur les builds Debug and Release, et l'erreur a disparu.

Druide
la source
J'ai eu une situation similaire, quelqu'un avait créé un sous-dossier "Publié" dans la racine du site Web sur le disque (il s'agit d'un ancien projet Web, l'un de ceux sans fichier Solution), et celui-ci contenait un fichier Web.config. L'erreur s'est produite lorsque Visual Studio a essayé de le créer et aucune quantité de nettoyage / suppression de dossiers "obj", etc. n'a corrigé cela, bien sûr. J'ai vu pas mal d'exemples de cette erreur, et c'est presque toujours un Web.config en double caché quelque part ... (très mauvais message d'erreur aussi!)
Détail du
4

Dans mon cas,

La solution contient 6 projets, 1 répertoire principal et 5 sous-répertoires. tous les sous-répertoires ayant web.config.

Lors de l'exécution d'une page dans des sous-répertoires, j'obtenais la même erreur.

J'ai supprimé cette ligne de web.config,

<authentication mode="Windows"/>

cela a fonctionné pour moi.

p_champ
la source
Quelle ligne avez-vous supprimée?
Mark Berry
La ligne était là mais ne s'affichait pas en raison d'un problème de retrait, je suppose. J'ai édité et collé le code dans un bloc de code, ça se voit maintenant. Veuillez vérifier et laissez-moi savoir si je peux vous aider dans quelque chose.
p_champ
Merci, cela confirme la ligne que cela a échoué pour moi aussi. Je n'ai qu'un seul site, donc je l'ai contourné en m'ouvrant en tant que site Web plutôt qu'en projet.
Mark Berry
4

Nettoyez votre projet Supprimez le dossier / obj (probablement en utilisant publier et déployer? - il y a un bogue)

NicoJuicy
la source
Seule solution qui a fonctionné pour moi. Arrivé ici en définissant <MvcBuildViews> true </MvcBuildViews>.
Paul
3

Mon problème était que j'avais accidentellement publié mon service Web dans un emplacement pré-complété sur une nouvelle installation de VS2010.

J'avais publié dans un dossier appelé PreCompiledWeb , et la présence du web.config que je soupçonne l'a gâché.

J'ai simplement bombardé le dossier et actualisé le projet.

Lorsque vous double-cliquez sur cette erreur, cela m'a conduit à ce fichier web.config erroné, qui m'a averti.

gaijintendo
la source
2

Cela peut être le problème de version comme vous téléchargez le projet de .Net Framework 2.0 et souhaitez l'ouvrir dans le VS2008, vous devrez alors mettre à niveau vers la dernière version et VS créera la sauvegarde du dossier dans le même répertoire racine. obtenez la réponse ici .

gofor.net
la source
La réponse de ranganh fournit ici quelques détails supplémentaires.
Mark Berry
2

J'ai eu cette erreur lors de la création de la solution avec le projet de déploiement Web créé dans ma solution. Je résout l'erreur en supprimant le dossier dans lequel le projet de déploiement Web est construit. Ce dossier est spécifié dans l'attribut "Dossier de projet" des propriétés WDP

Il y a
la source
2

Supprimez les dossiers bin et obj. Puis reconstruisez la solution.

Rovsen
la source
Pour l'Explorateur de fichiers, utilisez la requête de recherche "obj" kind: = folder et "bin" kind: = folder pour rechercher / supprimer ces dossiers. Cela a fonctionné pour moi.
Robert J. Good
2

Apparemment, il y avait deux fichiers web.config dans ma solution. J'utilise MVC4 et il y avait un autre fichier de configuration sous Vues et je faisais la modification dans le mauvais fichier. Fixé là m'a aidé.

Mais vous pouvez toujours modifier la redirection / route par défaut dans le fichier global.asax.

Gautam Beri
la source
1

Vous avez probablement un dossier de projet sous asp.net dans le dossier de projet qui n'est pas configuré comme répertoire virtuel. Configurez le projet pour qu'il s'exécute dans IIS.

funwithcoding
la source
1

J'ai ce problème plus fréquent si "vrai" est activé dans le fichier projet.

  1. Définir faux

Comme le dit Jonny:

  1. Nettoyez la solution pendant que votre solution est configurée en mode Release.
  2. Nettoyez la solution pendant que votre solution est configurée en mode Débogage.
  3. Générez pendant que votre solution est configurée en mode Débogage.
Riccardo Bassilichi
la source
1

J'avais un projet que je ne voulais pas être une application Web, je voulais que ce soit un dossier. La réponse était de supprimer complètement le fichier web.config. Il n'appartient qu'à la racine d'une application.

Rob Sedgwick
la source
1

Si vous rencontrez ce problème lors de la publication de votre site Web ou de votre application sur un serveur, la solution simple que j'ai utilisée consiste à convertir le dossier contenant des fichiers en application Web.

ehabh86
la source
4
Bonjour, bienvenue dans Stack Overflow! Pouvez-vous s'il vous plaît développer votre réponse? Pouvez-vous expliquer comment convertir le dossier en application Web? Cela aidera les autres à mieux comprendre votre réponse.
Jesse
1
Dans le Gestionnaire des services Internet (IIS Manager), sous le volet Connexions sur la droite, vous cliquez avec le bouton droit sur le répertoire sous les sites que vous avez créés (ou site Web par défaut) et choisissez Convert to Application.
Aske B.
1

J'ai le même problème dans VS 2013 après avoir publié mon projet en mode débogage. Le problème a été résolu en supprimant obj / files

Grigory Bushuev
la source
1

J'ai un projet de site Web.

Dans mon cas, j'avais déplacé le fichier de solution vers un autre chemin et cela causait le problème. Je l'ai restauré à l'emplacement précédent et le problème a disparu.

Daniel Silva
la source
1

Pour tous ceux qui recherchent encore, ma solution était de supprimer les dossiers bin et obj et de redémarrer Visual Studio semble le réparer.

Ricky G
la source
1

Via Visual Studio, j'avais publié un service WCF via FTP , sur un serveur externe. Cela a bien fonctionné localement et lors de la publication sur un serveur interne, mais pas sur l'externe. La solution était de publier sans fournir de Site Path (en d'autres termes, publier directement à la racine du répertoire virtuel).

Je ne sais pas pourquoi cela a fonctionné, car j'avais déjà essayé de déplacer les fichiers à la racine via un client FTP externe - parmi de nombreuses autres tentatives, y compris toutes répertoriées ici. Peut-être que c'était quelque chose avec le profil de publication, comme c'était le cas pour FabianVal . Mais je ne suis plus d'humeur à tester à ce stade, car je suis pressé de me mettre au courant après toutes les journées perdues sur ce problème.

Aske B.
la source
0

Astuce 1: nettoyez puis reconstruisez.

Astuce 2: fermez simplement VS et ouvrez à nouveau.

Astuce 3: le projet téléchargé peut se trouver dans un autre sous-dossier ... ouvrez le dossier contenant vos fichiers .net.

c: / demo1 / demo / (tous les fichiers)

Vous devriez avoir à ouvrir la démo de vs ... pas demo1.

Apprenant
la source
0

J'ai essayé toutes les solutions ci-dessus, mais aucune n'a fonctionné pour mon problème. (Je suis sûr qu'il existe 1000 solutions à ce problème) Pour mon scénario, j'essayais de publier mon service Web WCF que j'avais en test en production.

Cependant, je n'ai pas réalisé qu'en production, nous sommes uniquement HTTPS, ce qui signifie que nous redirigeons tout vers HTTPS. En fait, je pointais vers le service via HTTP au lieu de HTTPS, provoquant ainsi l'erreur. La solution dans ce scénario consistait simplement à changer le protocole d'adresse en HTTPS plutôt qu'en HTTP.

J'espère que cela aidera une pauvre âme à essayer de résoudre ce problème.

ROFLwTIME
la source