Fehler beim Verwenden eines Abschnitts, der als allowDefinition = ‘MachineToApplication’ über die Anwendungsebene hinaus registriert wurde

Es ist ein Fehler, einen Abschnitt zu verwenden, der als allowDefinition = ‘MachineToApplication’ über die Anwendungsebene hinaus registriert ist.

Die oberste Zeile in allen aspx-Seiten in meinem / portal / Verzeichnis hat diese Fehlermeldung, und ich weiß, dass es eine allgemeine ist. Ich habe diese Fehlermeldung zu keinem Ende gegooglet, und ich sehe viele Beiträge, die mir sagen, den / portal / ordner als eine Anwendung in IIS zu konfigurieren (was ich habe), und weitere Posts, die mir sagen, dass ich web.configs verschachtelt habe (aber Keine der Buchungen bietet eine Anleitung zu einer Lösung).

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

Meine web.config Zeile 50 ist wie folgt:

    

Also ich habe domain.com/web.config AND domain.com/portal/web.config … also meine domain.com/portal/default.aspx Seite wird nicht geladen.

Was ist die wirkliche Lösung dafür? Finde ich irgendwie eine Möglichkeit, mein root web.config mit meinem / portal / Verzeichnis web.config zusammenzuführen, oder bin ich hier weit weg von der Basis?

Jede Anleitung würde sehr geschätzt werden!

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, die die Basiskonfigurationsinformationen für alle Websites auf dem Webserver angibt. Diese Datei befindet sich im Ordner %WINDIR%\Microsoft.Net\Framework\version\CONFIG . Sie können auch eine Web.config-Datei im Stammordner Ihrer Website haben. Diese Web.config-Datei kann Einstellungen außer Kraft setzen, die in der “globalen” Web.config-Datei definiert sind, oder neue hinzufügen. Darüber hinaus verfügen Sie möglicherweise über Web.config-Dateien in den Unterordnern Ihrer Website, die neue Konfigurationseinstellungen definieren oder Konfigurationseinstellungen außer Kraft setzen, die in höheren Web.config-Dateien in der Hierarchie definiert sind.

Bestimmte Konfigurationselemente in Web.config können nicht über die Anwendungsebene hinaus definiert werden, dh sie müssen in der Datei “global” in der Datei Web.config oder in der Datei Web.config im Stammordner der Website definiert werden. Das -Element ist ein solches Beispiel. Die obige Fehlermeldung weist darauf hin, dass eine Web.config-Datei in einem der Unterordner der Website vorhanden ist, die über eines dieser Konfigurationselemente verfügt, die nicht über die Anwendungsebene hinaus definiert werden können.

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 wenn Ihre Einrichtung dies zulässt (dh gleiche Authentifizierungsmethode) – fügen Sie die -Einstellungen und alle anderen Elemente, die global definiert werden sollen, in die obere web.config ein

2 – Wenn Sie die web.config-Inhalte nicht zusammenführen können, dann sollten Sie in der Lage sein, den Unterordner in eine Webanwendung in IIS umzuwandeln, indem Sie die Schritte in diesem link archivierten Link unten befolgen. Der ursprüngliche Link funktioniert nicht mehr. (siehe archiviert ) Hoffe das hilft.

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 das Ausführen eines Builds unter dem Debug-Profil Detritus in dem Debug-Ordner unter dem fraglichen Projekt hinterlässt. Es gibt oft eine web.config-Datei, die zu dem obigen Fehler führt, wenn Sie anschließend einen Build unter dem Release-Profil ausführen.

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

Für das, was es wert ist, hatte ich den Fehler erhalten: “Es ist ein Fehler, einen Abschnitt zu verwenden, der als allowDefinition = ‘MachineToApplication’ über die Anwendungsebene hinaus registriert wurde.” und triggerse es schließlich durch Löschen der Verzeichnisse \ myWebApp \ obj \ Debug und \ myWebApp \ obj \ Release. Ich musste auch eine Standard-Startseite festlegen. Aber dann ging die App gut an. HTH.

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

Obwohl die Option “Ansichten erstellen” sehr schön ist, habe ich sie deaktiviert, weil dieser “Fehler” immer auftauchen würde und ich die App nicht ausführen könnte.

Nur um zu sagen

Wenn Sie ein Upgrade durchführen (z. B. 2008 -> 2010) Ein Projekt Visual Studio erstellt in der Projektlösung, die zur neuen Lösung hinzugefügt wird, eine Sicherung (sofern Sie dies zulassen). Aus dem alten Webconfig kann dann der oben aufgeführte Fehler hervorgehen .

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

Um es zu beheben: Entfernen Sie in diesem Szenario einfach den Sicherungsordner aus dem Projekt und der Lösung.

Ich habe einen anderen möglichen Grund gefunden, dass dies geschieht.

Ich hatte eine ältere Web-Anwendung in 2.0 gebaut. Ich habe es in eine 4.5-Lösung migriert.

Die Anwendung wurde innerhalb von Visual Studio ordnungsgemäß erstellt und debuggt. Als ich dann versuchte, die Webanwendung zu veröffentlichen, trat dieser Fehler jedoch immer wieder auf.

Ich entdeckte schließlich das Problem, dass Build Action für die Datei web.config “Embedded Resource” und nicht “Content” war. Außerdem wurde das Verzeichnis zum Kopieren nach Ausgabe auf “Immer kopieren” anstatt auf “Nicht kopieren” gesetzt. Ich weiß nicht, wann diese Einstellungen vorgenommen wurden, aber ich glaube, dass es in der Version 2.0 der Anwendung zurück war.

Durch Ändern der Einstellungen für die Datei “web.config” konnte die Aktion “Veröffentlichen” in Visual Studio 2012 errorsfrei ausgeführt werden.

Ich hatte das gleiche Problem in einem MVC-Projekt. Der Fehler ist aufgetreten, als ich versucht habe zu veröffentlichen. Der obj-Ordner sollte leer sein (oder zumindest keine web.config enthalten).

Running Clean hat den Trick für mich nicht gemacht.

Ich triggerse das Problem, indem ich den obj Ordner vor jedem Build säuberte (das obj des Projekts wird in meinem Fall sowieso nicht so lange dauern).

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

        

Hoffe das hilft

Ich habe diesen Fehler nur während der Veröffentlichung der Anwendung festgestellt.

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

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

Die Lösung war, die Einstellungen zu ändern:

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

Ich hatte auch dieses Problem und es kam, nachdem ich den Veröffentlichungs-Assistenten verwendet habe, um meine Website im Web zu veröffentlichen.

Nach langem Suchen stieß ich auf den Bug-Bericht auf der Connect-Website https://connect.microsoft.com/VisualStudio/feedback/details/779737/error-allowdefinition-machinetoapplication-beyond-application-level

Ein MS-Representant antwortete und erklärte nicht nur, warum dies ein Problem bei der Veröffentlichung war, sondern auch eine temporäre Problemumgehung, die das Problem für mich behob.

Löschen und erstellen Sie das virtuelle Verzeichnis erneut. Klicken Sie mit der rechten Maustaste und konvertieren Sie das virtuelle Verzeichnis in ” Anwendung

“Es ist ein Fehler, einen Abschnitt zu verwenden, der über die Anwendungsebene als allowDefinition = ‘MachineToApplication’ registriert ist. Dieser Fehler kann dadurch verursacht werden, dass ein virtuelles Verzeichnis nicht als Anwendung in IIS konfiguriert wird.”

Ich hatte dieses Problem in VS.NET. Es stellte sich heraus, dass ich beim Konfigurieren einiger Konfigurationstransformationen die Eigenschaft der Web.config-Datei irrtümlicherweise auf “Immer kopieren” gesetzt hatte. Normalerweise setze ich meine Transformationsdateien auf “Immer kopieren”, belasse die Stammdatei web.config jedoch als “Nicht kopieren”.

Beachten Sie auch, dass das Ändern der Eigenschaften von web.config auch alle verschachtelten Transformationen ändert.

Also, um zu beheben:

1) Ändern Sie web.config in “Nicht kopieren”

2) Optional, wenn Sie Config Transformationen verwenden, setzen Sie sie auf “Immer kopieren”

3) Löschen Sie die Obj- und Bin-Ordner aus der Lösung (diese sind möglicherweise nicht sichtbar, wählen Sie also den Projektknoten im Projektmappen-Explorer und klicken Sie auf die Schaltfläche “Alle Dateien anzeigen”.

4) Veröffentlichen

Arbeitete für mich.

Für mich lag der Grund darin, dass der Ordner obj unter dem Website-Ordner lag und mehrere web.config nach dem Erstellen verschiedener Konfigurationen erschienen. Ich habe das Problem unter vs2012 getriggers, indem ich den Obj-Ordner von der Website wegbewegte. Um dies zu tun, habe ich manuell (im Editor) $ (SolutionDir) \ Obj \ $ (Konfiguration) zu jeder Konfiguration in der Website-Projektdatei hinzugefügt.

Ich hatte das gleiche Problem, wenn ich die Seite veröffentlichen würde, wenn ich die Seite erstelle, bekomme ich keine Probleme, aber während der Veröffentlichung würde ich diesen schrecklichen Fehler bekommen:

“Es ist ein Fehler, einen Abschnitt zu verwenden, der über die Anwendungsebene als allowDefinition = ‘MachineToApplication’ registriert ist. Dieser Fehler kann dadurch verursacht werden, dass ein virtuelles Verzeichnis nicht als Anwendung in IIS konfiguriert wird.”

Ich habe versucht, alles, was hier in diesem Post gesagt wurde, auf keinen Fall, was für mich funktionierte, war nur ein neues Veröffentlichungsprofil mit genau dem gleichen zu erstellen, das ich verwendet habe und das funktioniert gut, bekomme den Fehler nicht mit dem neuen Profil aber mit dem alten machen. Nicht sicher, was der Unterschied ist, aber zumindest kann ich mein MVC-Projekt veröffentlichen.

Hoffe, das hilft jemandem !!

Hier ist ein weiterer Grund: Wenn Sie Ihre gesamte Webanwendung in einen eigenen Unterordner kopieren, erhalten Sie diesen Fehler. Ich habe es geschafft, dies auf eine alte Seite zu tun, als ich von einer Maschine auf eine andere kopiert habe – ich wurde gerade gebeten, nach einer Lücke von etwa 2 Jahren auf die Seite zu schauen und der Fehler ist aufgetreten. Nahm ein bisschen heraus herauszufinden – da ich keine mehrere Konfigurationsdateien hatte.

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

von vs: Build> Clean Solution

dann neu erstellen.

Windows starten -> öffnen Sie Sites -> IIS -> klicken Sie mit der rechten Maustaste auf Ihre Site -> Website verwalten -> Erweiterte Einstellungen -> Physischer Pfad durchsuchen -> versuchen Sie, Unterordner der einmal ausgewählten Auswahl auszuwählen.

Die Logik ist, dass die Web-Konfigurationsdatei im Unterordner versucht, Änderungen vorzunehmen, und dies ist nicht zulässig, muss der ausgewählte Ordner sein: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx

Stellen Sie sicher, dass Sie nicht versehentlich über localchost / mysite.test auf Ihre lokale Website zugreifen, was mysite.test sein sollte, was Ihnen diesen Fehler anzeigt .

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

Ich migrierte Apps und die App hatte mehrere Anwendungen (mehrere web.configs) innerhalb. Ich habe in IIS gehen dann rechts auf die Unterordner dann “In Anwendung konvertieren” und es funktionierte.

Ich habe diesen Fehler anders als alle anderen:

Ich habe von vs2010 mit Web-Deployment-Projekt auf vs2012 und ein neues Web-Publish-Profil migriert.

Ich habe ein neues Web-Publish-Projekt in vs2012 erstellt, um es im Dateisystem zu veröffentlichen (wir haben einen separaten Installer-Builder, dies ist eine kommerzielle App), und ich veröffentlichte in einem Ordner, der innerhalb des bestehenden Web-Projekts war, das mit IIS verbunden ist.

Dies verursachte den Fehler während des Publizierens, was mich anfangs irritierte, weil ich im Dateisystem publizierte, nicht im IIS (dachte ich).

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

Ich erhalte diesen Fehler auch, wenn ich versuche, eine Unterwebsite in der Website bereitzustellen.

Die Lösung ist:

  1. Sie müssen einige Konfigurationsregisterkarten wie: profile , membership , roleManager , sessionState in der sub web.config entfernen
  2. Ändern Sie die Authentifizierung in wie folgt:
  3. Und gehen Sie zu IIS mit der rechten Maustaste auf Unterordner > Anwendung hinzufügen.
  4. Setzen Sie IIS zurück, um dieses Problem zu beheben.

Wenn Sie andere Probleme haben, zögern Sie nicht, mich anzurufen, vielleicht werde ich finden, um zu helfen.

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

In Ausgabeverzeichnis kopieren = Nicht kopieren

Es war gut auf localhost aber als ich eine Veröffentlichung auf dem Server veröffentlicht habe, habe ich den gleichen Fehler für wenige Seiten gestartet. Dann habe ich die Lösung aufgeräumt und neu erstellt und veröffentlicht, die Dinge wurden behoben.

Manchmal ist die einfache Antwort am besten. Ich hatte zwei web.config-Dateien in meinem Projekt. Der auf der Hauptebene ist, wo ich die Änderung vornehmen musste, um mit meinem Sitzungszeitlimit umzugehen (was dieses Problem ausgetriggers hat). 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 merken, dass ich zwei separate web.config-Dateien hatte, habe ich alles versucht, außer nach dem Offensichtlichen zu suchen.