web-dev-qa-db-fra.com

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

J'ai téléchargé le projet en ligne sur ASP.Net. En cours d'application, j'obtiens une erreur

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

Quels changements dois-je effectuer dans web.config ou ailleurs pour que cela fonctionne?

191
Deepali

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

Le seul moyen de contourner le problème que j'ai constaté consiste à suivre cette liste de contrôle:

  1. Solution propre pendant que votre solution est configurée en mode de libération.
  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.
98
John Reilly

Vient de traverser ce post et cela m’arrivait.
Juste Clean le projet et l’erreur disparaît. (doit être un bogue VS2010)

83
Eduardo Molteni

Je viens d'avoir ce problème lors de la construction d'une deuxième version de mon site web. Ce n'est pas arrivé quand je l'ai construit la première fois.

Je viens de supprimer les dossiers bin et obj, de lancer une solution de nettoyage et de la reconstruire, cette fois sans aucun problème.

25
xiecs

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

20
Will

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 consiste à vérifier le dossier de votre solution (c’est-à-dire où vous avez enregistré votre code) et à vérifier si vous avez un fichier * .sln dans le répertoire racine, si vous le faites alors. Nous avons créé un projet.

Juste pour ajouter, j'ai rencontré cette erreur tout à l'heure lorsque j'ai tenté d'ouvrir un projet 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 le projet". au lieu. J'ai fait facepalmed dès que j'ai réalisé :)

16
Pete

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

Dans mon cas, j'avais WebService planté à l'intérieur de IIS website donc

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

La WCF est de retour.

12
Marek

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

Recherchez la documentation et ajoutez le répertoire virtuel requis. Il doit s'agir d'un répertoire contenant web.config (et non le répertoire racine).

10
Oded

Si vous avez un projet MVC avec la 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

10
Shaman

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

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

8
SushiGuy

si jamais vous rencontrez cette erreur

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

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

  1. Décharger votre projet actuel
  2. éditez votre .csproj
  3. Trouvez ce <MvcBuildViews>false</MvcBuildViews>
  4. Au lieu de false changer la valeur en vrai
  5. Chargez à nouveau votre projet et vous ne devriez plus avoir cette erreur

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

6
visar_uruqi

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.config et la construction a donc échoué avec cette erreur. J'ai supprimé le dossier "Backup", fait une solution de nettoyage sur les versions Debug et Release, et l'erreur a disparu.

5
Druid

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

Il est clair que le web_publish contient également le même Web.configs que le projet. Cependant, le web_project ne sait pas que mon web_publish doit être évité lors de la recherche de Web.configs dans les sous-répertoires imbriqués. De cette façon, les Web.configs ont été dupliqués et l'erreur est apparue.

La solution consistait à placer mon web_publish ailleurs.

5
pepr

Dans mon cas,

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

Lors de l'exécution d'une page dans les 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.

4
p_champ

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

3
NicoJuicy

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

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

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

Lorsque je double-clique sur cette erreur, cela me mène à ce fichier web.config erroné, qui m’a averti.

3
gaijintendo

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

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

2
Gautam Beri

Supprimer les dossiers bin et obj. Reconstruisez ensuite la solution.

2
rovsen

Il peut s'agir du problème de version lorsque vous téléchargez le projet de .NET Framework 2.0 et souhaitez l’ouvrir dans le VS2008. Vous devrez ensuite effectuer la mise à niveau vers la version la plus récente. VS créera alors la sauvegarde du dossier dans le même répertoire racine. obtenir la réponse ici .

2
gofor.net

J'ai eu cette erreur lors de la génération de la solution avec Web Deployment Project créé dans ma solution. Je résous l'erreur en supprimant le dossier dans lequel le projet de déploiement Web est créé. Ce dossier est spécifié dans l'attribut "Project Folder" des propriétés WDP.

2
Ilya

Pour ceux qui cherchaient toujours, ma solution consistait à supprimer les dossiers bin et obj et à redémarrer Visual Studio.

1
Ricky G

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

  1. Définir faux

Comme le dit Jonny:

  1. Solution propre pendant que votre solution est configurée en mode de libération.
  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.
1
Riccardo Bassilichi

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 vers un serveur externe. La solution consistait à 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 à faire des tests à ce stade, car je suis pressé de me mettre à niveau après toutes les journées perdues à cause de ce problème.

1
Aske B.

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

1
funwithcoding

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 un dossier contenant des fichiers en application Web.

1
ehabh86

J'ai ajouté à mon site publier un script. À la fin, supprimez le dossier obj du dossier de votre site Web.

1
Valamas

J'ai eu 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.

1
Rob Sedgwick

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 s'est résolu.

1
Daniel Silva

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

1
Grigory Bushuev

J'ai essayé toutes les solutions ci-dessus, mais aucune d'entre elles 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 le service Web WCF que j'avais testé en production.

Cependant, je n'ai pas réalisé que dans la production, nous sommes uniquement HTTPS, ce qui signifie que nous redirigeons tout vers HTTPS. En fin de compte, je pointais vers le service via HTTP au lieu de HTTPS, provoquant ainsi l'erreur. La solution dans ce scénario consistait simplement à modifier 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.

0
ROFLwTIME

Dans notre cas, nous déployions un site sur un serveur qui était répliqué sur d'autres serveurs. L'exécution d'un IISRESET sur tous les serveurs de l'environnement de déploiement a fonctionné.

0
user1477388

Dans mon cas, j'hébergeais avec GoDaddy, ce qui n'était pas le problème mais cela semait la confusion.

J'avais un dossier racine "WebServices" et le définissais comme racine de l'application.

CEPENDANT, le service se trouvait dans un sous-dossier appelé "GeoLocateSpecials" car le dossier "WebServices" est un conteneur pour de nombreux services.

J'ai donc dû définir GeoLocateSpecials comme racine d'application et cela a très bien fonctionné à partir de là.

J'espère que cela aide quelqu'un d'autre là-bas.

0
GPGVM

Après avoir supprimé les fichiers de sauvegarde de Crystal Reports du dossier du projet, cela fonctionne pour moi.

0

J'avais le même problème lorsque je publiais le site. Si je construisais le site, je n'aurais aucun problème, mais lors de la publication j'aurais cette terrible erreur:

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

J'ai essayé tout ce qui a été dit ici dans ce post, sans recours. Ce qui a fonctionné pour moi a été de créer un nouveau profil de publication avec exactement le même profil que celui que j'ai utilisé et qui fonctionne bien, ne recevez pas l'erreur. avec le nouveau profil mais fais avec l'ancien. Je ne sais pas quelle est la différence, mais au moins je peux publier mon projet MVC.

J'espère que cela aide quelqu'un!

0
FabianVal

conseil 1: nettoyez et reconstruisez.

conseil 2: fermez VS et ouvrez-le à nouveau.

conseil 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 ... not demo1.

0
Learner

J'ai eu le même problème, car un nouveau Web.Config global est automatiquement créé pour le dossier parent. C'était\Site Web\Site Web.

Après avoir déplacé tous les fichiers du dossier enfant vers le parent et supprimé le dossier enfant, je n'ai plus qu'un seul Web.Config et le problème est résolu.

0
Auguste