wake-up-neo.com

Fehler beim Verwenden eines Abschnitts, der als allowDefinition = 'MachineToApplication' außerhalb der Anwendungsebene registriert ist

Es ist ein Fehler, einen Abschnitt zu verwenden, der als allowDefinition = 'MachineToApplication' außerhalb der Anwendungsebene registriert ist.

Die oberste Zeile in allen meinen ASPX-Seiten in meinem/portal/-Verzeichnis enthält diese Fehlermeldung, und ich weiß, dass es eine gewöhnliche ist. Ich habe diese Fehlermeldung ohne Ende gegoogelt, und ich sehe viele Posts, in denen ich den/portal/-Ordner als Anwendung in IIS (die ich habe) zu konfigurieren, und weitere Posts, die mir sagen, dass ich Web verschachtelt habe .configs (aber keine der Postings gibt Hinweise für eine Lösung).

Mein Setup ist, dass ich eine web.config in meinem Stammverzeichnis habe und dann versuche, ein Unternehmensportal im Verzeichnis/portal/zu erstellen. Das Verzeichnis/portal/hat eine eigene (notwendige) web.config. 

Meine web.config-Zeile 50 sieht folgendermaßen aus:

    <customErrors mode="Off" defaultRedirect="customerrorpage.aspx"/>
    <anonymousIdentification enabled="true"/>
    <authentication mode="Forms"/>
    <membership defaultProvider="MyProvider">

Ich habe also domain.com/web.config UND domain.com/portal/web.config ... damit meine domain.com/portal/default.aspx-Seite nicht geladen wird.

Was ist die wirkliche Lösung dafür? Kann ich irgendwie meine root web.config mit meinem/portal/verzeichnis web.config zusammenführen, oder bin ich hier weit weg?

Jede Anleitung wäre sehr dankbar!

164
Jason Weber

Nur für Hintergrundinformationen; Konfigurationsinformationen für eine ASP.NET-Website sind in einer oder mehreren Web.config-Dateien definiert. Die Konfigurationseinstellungen werden hierarchisch angewendet. Es gibt eine "globale" Web.config-Datei, in der die Baseline-Konfigurationsinformationen für alle Websites auf dem Webserver aufgeführt sind. Diese Datei befindet sich im Ordner %WINDIR%\Microsoft.Net\Framework\version\CONFIG. Sie können auch eine Web.config-Datei im Stammverzeichnis Ihrer Website haben. Diese Web.config-Datei kann Einstellungen überschreiben, die in der "globalen" Web.config-Datei definiert sind, oder neue hinzufügen. Darüber hinaus befinden sich möglicherweise Web.config-Dateien in den Unterordnern Ihrer Website, die neue Konfigurationseinstellungen definieren oder Konfigurationseinstellungen überschreiben, die in Web.config-Dateien oberhalb der Hierarchie definiert sind.

Bestimmte Konfigurationselemente in Web.config können nicht über die Anwendungsebene hinaus definiert werden. Dies bedeutet, dass sie in der globalen Web.config-Datei oder in der Web.config-Datei im Stammordner der Website definiert werden müssen. Das <authentication>-Element ist ein solches Beispiel. Die obige Fehlermeldung zeigt an, dass sich in einem der Unterordner der Website eine Datei Web.config befindet, die über eines dieser Konfigurationselemente verfügt, das nicht über die Anwendungsebene hinaus definiert werden kann.

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

Sie haben die 2 möglichen Ansätze richtig erkannt. 

1 - Abhängig vom Inhalt Ihrer zweiten web.config und ob Ihr Setup dies zulässt (d. H. Gleiche Authentifizierungsmethode) - fügen Sie die <authentication>-Einstellungen und alle anderen Elemente, die global definiert werden sollten, in die oberste web.config ein

2 - Wenn Sie keine web.config-Inhalte zusammenführen können, sollten Sie den Unterordner in eine Webanwendung in IIS umwandeln können, indem Sie die Schritte in diesem Link unter folgendem Link ausführen. Der ursprüngliche Link funktioniert nicht mehr. (siehe archiviert ) Hoffe das hilft.

196
benni_mac_b

Wie RY4N oben sagt, ist es nicht unbedingt die Datei web.config in Ihrem Projektordner, die das Problem verursacht. In einigen Fällen habe ich festgestellt, dass die Ausführung eines Builds unter dem Debug-Profil Detritus im Debug-Ordner unter dem betreffenden Projekt hinterlässt. Oft befindet sich hier eine Datei web.config, die zu dem oben genannten Fehler führt, wenn Sie anschließend einen Build unter dem Release-Profil ausführen.

Die Lösung, die hier funktioniert, ist das Löschen des gesamten Debug-Ordners, den die vorherigen Builds im Projektverzeichnis erstellt haben.

56
Matthew Brown

Ich hatte den Fehler erhalten. "Es ist ein Fehler, einen als allowDefinition = 'MachineToApplication' registrierten Abschnitt außerhalb der Anwendungsebene zu verwenden." Am Ende wurde das Problem gelöst, indem die Verzeichnisse\myWebApp\obj\Debug und\myWebApp\obj\Release gelöscht wurden. Ich musste auch eine Standardstartseite festlegen. Aber dann hat die App gut angefangen. HTH.

53
Aaronius

Es geschah auch auf meinem Heimcomputer, aber NUR wenn ich Build Views in der Release-Konfiguration aktiviert habe UND eine Release-Konfiguration erstellt habe. Sonst ist es nicht passiert.

Obwohl die Option zum Erstellen von Ansichten sehr schön ist, habe ich sie deaktiviert, da dieser "Fehler" immer angezeigt würde und ich die App nicht ausführen konnte.

21
Lord of Scripts

Nur um zu sagen

Wenn Sie ein Upgrade durchführen (z. B. 2008 -> 2010) Ein Projekt Visual Studio erstellt (sofern Sie dies zulassen) eine Sicherungskopie in der Projektlösung, die der neuen Lösung hinzugefügt wird In Webconfig kann dann der oben genannte Fehler auftreten.

"Web.config-Datei in einem der Unterordner der Website enthält eines dieser Konfigurationselemente, das nicht über die Anwendungsebene hinaus definiert werden kann." @ Benni_mac_b

Zum Beheben: Entfernen Sie in diesem Szenario einfach den Sicherungsordner aus dem Projekt und der Lösung.

12
RY4N

Ich habe einen anderen möglichen Grund dafür gefunden.

Ich hatte eine ältere Webanwendung, die in 2.0 erstellt wurde. Ich habe es auf eine 4.5-Lösung migriert.

Die Anwendung wurde in Visual Studio erstellt und debuggt, aber als ich die Webanwendung veröffentlichen wollte, trat dieser Fehler immer wieder auf.

Ich entdeckte schließlich, dass das Problem darin bestand, dass "Build Action" für die Datei "web.config" "eingebettete Ressource" und nicht "Inhalt" war. Das Copy to Output-Verzeichnis wurde auch auf "Always Copy" und nicht auf "Don't Copy" gesetzt. Ich weiß nicht, wann diese Einstellungen vorgenommen wurden, aber ich glaube, es war wieder in der 2.0-Version der Anwendung. 

Durch das Ändern der Einstellungen für die Datei "web.config" konnte die Aktion "Veröffentlichen" in der Publikation von Visual Studio 2012 einwandfrei funktionieren. 

11
Tim C

Ich hatte das gleiche Problem in einem MVC-Projekt. Der Fehler ist beim Versuch des Publizierens aufgetreten. Der obj-Ordner sollte leer sein (oder zumindest keinen web.config enthalten).

Das Ausführen von Clean hat mir nicht geholfen.

Ich habe das Problem durch Bereinigen des obj-Ordners vor jedem Build gelöst (das Erstellen des Projekts dauert in meinem Fall sowieso nicht so lange).

Ich habe das Projekt entladen und dem BeforeBuild-Ziel Folgendes hinzugefügt

<Target Name="BeforeBuild">
    <Delete Files="$(SolutionDir)\$(ProjectDir)\bin\**\*.*" />
    <Delete Files="$(SolutionDir)\$(ProjectDir)\obj\**\*.*" />
    <RemoveDir Directories="$(SolutionDir)\$(ProjectDir)\bin" />
    <RemoveDir Directories="$(SolutionDir)\$(ProjectDir)\obj" />
    <Message Text="Clean obj/bin from web project" />
</Target>

Hoffe das hilft

9
Rik

"Es ist ein Fehler, einen Abschnitt zu verwenden, der als allowDefinition = 'MachineToApplication' außerhalb der Anwendungsebene registriert ist. Dieser Fehler kann durch ein virtuelles Verzeichnis verursacht werden, das nicht als Anwendung in IIS konfiguriert ist."

Ich hatte dieses Problem in VS.NET. Es stellte sich heraus, dass ich bei der Konfiguration einiger Konfigurationsumwandlungen die Eigenschaft "Datei immer kopieren" der Datei "Web.config" falsch festgelegt hatte. Normalerweise setze ich meine Transformationsdateien auf "Immer kopieren", belasse die Stammdatei web.config jedoch als "Nicht kopieren".

Achten Sie darauf, da durch das Ändern der Eigenschaften von web.config auch alle geschachtelten Transformationen geändert werden.

Also zu beheben:

1) Ändern Sie die web.config in "Nicht kopieren".

2) Wenn Sie Konfigurationsumwandlungen verwenden, setzen Sie sie optional auf "Immer kopieren".

3) Löschen Sie die Ordner obj und bin aus der Projektmappe (diese sind möglicherweise nicht sichtbar. Wählen Sie daher den Projektknoten im Projektmappen-Explorer aus und klicken Sie auf die Symbolleistenschaltfläche "Alle Dateien anzeigen".

4) Veröffentlichen

Arbeitete für mich.

6
ben

Dieser Fehler ist nur beim Veröffentlichen der Anwendung aufgetreten.

Die Eigenschaften der Dateien web.config (und der Umwandlungen) wurden wie folgt festgelegt:

  • Build Action - None 
  • Copy to Output - Always

Die Lösung bestand darin, die Einstellungen zu ändern:

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

Delete und Create das virtuelle Verzeichnis erneut ..__ Klicken Sie mit der rechten Maustaste und konvertieren Sie das virtuelle Verzeichnis in "Application".

4
sudhAnsu63

Ich hatte auch dieses Problem und es entstand, nachdem ich die Veröffentlichung Wizard zum Veröffentlichen meiner Website im Web verwendet hatte.

Nach langem Stöbern stieß ich auf den Fehlerbericht auf der Connect-Website: https://connect.Microsoft.com/VisualStudio/feedback/details/779737/error-allowdefinition-machinetoapplication-beyond-application-level =

Ein MS-Mitarbeiter antwortete und erläuterte, warum dies ein Problem war, das beim Veröffentlichen auftrat. Er fügte auch eine vorübergehende Problemumgehung hinzu, mit der das Problem für mich behoben wurde.

Klicken Sie im Projektmappen-Explorer auf die Datei Web.config und ändern Sie sie 

In Ausgabeverzeichnis kopieren = Nicht kopieren

2
nPcomp

Dies ist ein weiterer Grund: Wenn Sie Ihre gesamte Web-App in einen eigenen Unterordner kopieren, wird dieser Fehler angezeigt. Beim Kopieren von einem Computer auf einen anderen ist es mir gelungen, dies auf einer alten Site auszuführen. Ich wurde lediglich gebeten, die Site nach einer Lücke von etwa 2 Jahren zu betrachten, und der Fehler trat auf. Ich habe ziemlich viel darüber nachgedacht - ich hatte keine mehreren Konfigurationsdateien. 

1

Windows-Start -> Offene Sites -> IIS -> Klicken Sie mit der rechten Maustaste auf Ihre Site -> Website verwalten -> Erweiterte Einstellungen -> Durchsuchen des physischen Pfads -> Versuchen Sie, einen Unterordner der aktuellen Auswahl auszuwählen.

die Logik ist, dass die Web-Konfigurationsdatei innerhalb des Unterordners versucht, Änderungen vorzunehmen. Dies ist nicht zulässig. Der Ordner muss ausgewählt sein: http://scottonwriting.net/sowblog/archive/2010/02/17/163375 .aspx

1
Subodh Pradhan

Der Grund für mich war, dass sich der obj-Ordner unter dem Websiteordner befand und mehrere web.config nach dem Erstellen verschiedener Konfigurationen erschienen. Ich habe das Problem unter vs2012 gelöst, indem ich den Obj-Ordner von der Website aus bewege. Zu diesem Zweck habe ich manuell (im Notizblock) $ (SolutionDir)\Obj\$ (Configuration) Zu jeder Konfiguration in der Website-Projektdatei hinzugefügt.

1

Ich hatte dieses Problem und löste meine Lösung von alten Baugruppen usw.

von vs: Build> Clean Solution

dann neu erstellen.

1
kennydust

Ich hatte das gleiche Problem, als ich die Site veröffentlichte. Wenn ich die Site baue, bekomme ich keine Probleme, aber beim Publizieren würde ich diesen schrecklichen Fehler bekommen:

"Es ist ein Fehler, einen Abschnitt zu verwenden, der als AllowDefinition = 'MachineToApplication' außerhalb der Anwendungsebene registriert ist. Dieser Fehler kann dadurch verursacht werden, dass ein virtuelles Verzeichnis nicht als -Anwendung in IIS konfiguriert wird."

Ich habe alles, was hier in diesem Beitrag erwähnt wurde, zu keinem Ausweg ausprobiert. Für mich war es einfach, ein neues Veröffentlichungsprofil mit dem gleichen Profil zu erstellen, das ich bisher verwendet habe, und das funktioniert gut. Der Fehler wird nicht angezeigt mit dem neuen profil aber mit dem alten. Ich bin nicht sicher, was der Unterschied ist, aber zumindest kann ich mein MVC-Projekt veröffentlichen.

Hoffe das hilft jemandem !!

1
FabianVal

Auf localhost war es in Ordnung, aber als ich eine Version auf dem Server veröffentlichte, begann ich den gleichen Fehler für einige Seiten ..__Dann habe ich die Lösung aufgeräumt und neu erstellt und veröffentlicht, die Probleme wurden behoben. 

0
Baqer Naqvi

Diese Fehlermeldung wird auch angezeigt, wenn Sie versuchen, eine Unterwebsite auf der Website bereitzustellen.

Die Lösung ist:

  1. Sie müssen einige Konfigurationsregisterkarten wie: profile , Mitgliedschaft , roleManager , sessionState in der Sub-Datei web.config entfernen
  2. Ändern Sie die Authentifizierung in Keine wie folgt: <authentication mode="None" />
  3. Gehen Sie zu IIS und klicken Sie mit der rechten Maustaste auf den Unterordner - > Anwendung hinzufügen.
  4. Setzen Sie IIS zurück, um dieses Problem zu beheben.

WENN ich ein anderes Problem bekomme, zögern Sie nicht, mich zu klingeln, vielleicht werde ich finden, um zu helfen.

0
Trung

mein Fehler war das versehentliche Kopieren einer web.config in einen anderen Ordner auf dem Webserver 

0
krilovich

Stellen Sie sicher, dass Sie nicht in die Falle geraten, auf Ihre lokale Site zuzugreifen falsch über localchost/mysite.test. Dies sollte mysite.test sein , was Ihnen diesen Fehler anzeigen wird.

Wenn Sie wie localhost/dir_name auf Ihre Site zugreifen, fällt Ihre web.conf unter die Root-Ebene und damit dieser Fehler.

0
Hammad Khan

Ich habe Apps migriert und die App hatte mehrere Apps (mehrere web.configs) in sich. Was ich getan habe war in IIS, dann mit der rechten Maustaste auf die Unterordner und dann auf "In Anwendung umwandeln".

0
sojim2

Manchmal ist die einfache Antwort am besten. Ich hatte zwei web.config-Dateien in meinem Projekt. Auf der Hauptebene musste ich die Änderung vornehmen, um mit meinem Sitzungszeitlimit (das dieses Problem ausgelöst hat) umzugehen. Ich hatte eine separate Konfigurationsdatei in meinem Razor Views-Verzeichnis, die Einstellungen für Razor und seine Ansichten hatte. Ich habe dort einen Abschnitt hinzugefügt (nicht auf Anwendungsebene!). Ohne zu wissen, dass ich zwei separate web.config-Dateien hatte, habe ich alles versucht, außer das Offensichtliche zu suchen.

0
Guy Schalnat

Ich habe diesen Fehler anders als alle anderen bekommen:

Ich habe von vs2010 mit dem Webimplementierungsprojekt zu vs2012 und einem neuen Web-Publizierungsprofil migriert.

Ich habe in vs2012 ein neues Web-Publish-Projekt erstellt, um es im Dateisystem zu veröffentlichen (wir haben einen separaten Installer-Builder, dies ist eine kommerzielle App), und ich veröffentlichte einen Ordner, der sich innerhalb des vorhandenen Webprojekts befand, das mit IIS verknüpft ist. 

Dies verursachte den Fehler während der Veröffentlichung, der mich zunächst verblüffte, weil ich im Dateisystem publizierte, nicht in IIS (dachte ich).

Die Lösung bestand darin, die Veröffentlichung in einem Ordner außerhalb des Webprojekts zu ändern.

0
JohnC

Ich habe diesen Fehler auf localhost in Visual Studio 2017 erhalten, und ein einfacher Neustart von Visual Studio hat das Problem behoben.

Mir ist klar, dass dieses Problem auch dadurch verursacht werden kann, dass mehr als eine web.config vorhanden ist. eine innerhalb eines Unterordners zum Beispiel. Wenn Sie mehrere web.config-Dateien absichtlich für eine andere Anwendung haben: Stellen Sie sicher, dass das Verzeichnis nicht als virtuelles Verzeichnis angesehen wird.

0
Josh Harris